From 1c7a503b8adae022dee8211abfe047a5c9040224 Mon Sep 17 00:00:00 2001 From: dkoukoul Date: Fri, 12 Jul 2024 17:18:01 +0300 Subject: [PATCH] generated site --- site/404.html | 18 + site/PKT_FAQ/index.html | 18 + site/adv_learning/buy-pkt/index.html | 18 + site/adv_learning/cryptoeconomics/index.html | 18 + site/adv_learning/pktd-full-node/index.html | 18 + site/adv_learning/sell-pkt/index.html | 18 + .../swap-pkt-wrapped-pkt/index.html | 18 + site/cjdns_websites/index.html | 18 + site/commercial/index.html | 18 + site/communication/index.html | 18 + site/community/classifieds/index.html | 18 + site/community/code_of_conduct/index.html | 18 + .../index.html | 18 + site/community/press-media-assets/index.html | 18 + site/dev/building-on-pkt/index.html | 18 + site/dev/cjdns/index.html | 18 + site/dev/cloud-isp/index.html | 18 + site/dev/edge-points/index.html | 18 + site/dev/packetcrypt/index.html | 18 + site/dev/pkt-lightning-deamon/index.html | 18 + site/dev/pkt-vpn/index.html | 18 + site/dev/tokenstrike/index.html | 18 + site/dev/wiif-sharing/index.html | 18 + site/electrum/index.html | 18 + site/index.html | 20 +- site/learn/network-steward/index.html | 18 + site/learn/packetcrypt/index.html | 18 + site/learn/pkt-cash/index.html | 18 + site/learn/pkt-network/index.html | 18 + site/learn/pkt/index.html | 18 + site/learn/wpkt/index.html | 18 + site/mining/index.html | 18 + site/mining/pool_setup_guide/index.html | 18 + site/pktd/index.html | 18 + site/pktd/migrating_from_electrum/index.html | 18 + site/pktd/pktwallet/index.html | 18 + site/pktwalletgui/index.html | 18 + .../cjdns_node/index.html | 468 +++++++++++++++++ .../cjdns_website/index.html | 487 ++++++++++++++++++ .../vpn_server/index.html | 463 +++++++++++++++++ site/search/search_index.json | 2 +- site/sitemap.xml | 115 +++-- site/sitemap.xml.gz | Bin 666 -> 706 bytes .../announcement-mining/index.html | 18 + site/start_mining/intro/index.html | 18 + site/start_mining/pkt-mining-pool/index.html | 18 + site/units/index.html | 18 + site/useful_tools/index.html | 18 + site/vote/index.html | 18 + .../wallet_setup/install-from-seed/index.html | 18 + .../install-pkt-electrum/index.html | 18 + site/wallet_setup/pkt-cli-wallet/index.html | 18 + site/wallet_setup/pkt-wallet-setup/index.html | 18 + site/wallet_setup/pkt-world-wallet/index.html | 18 + site/wallet_setup/pkt-zulu-wallet/index.html | 18 + site/wallet_setup/wallet-faq/index.html | 18 + site/wrapped_pkt/index.html | 18 + 57 files changed, 2403 insertions(+), 52 deletions(-) create mode 100644 site/running_infrastructure/cjdns_node/index.html create mode 100644 site/running_infrastructure/cjdns_website/index.html create mode 100644 site/running_infrastructure/vpn_server/index.html diff --git a/site/404.html b/site/404.html index 94c175f..d9e2953 100644 --- a/site/404.html +++ b/site/404.html @@ -194,6 +194,24 @@

404

  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/PKT_FAQ/index.html b/site/PKT_FAQ/index.html index 362a866..655b154 100644 --- a/site/PKT_FAQ/index.html +++ b/site/PKT_FAQ/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/adv_learning/buy-pkt/index.html b/site/adv_learning/buy-pkt/index.html index 0734fc3..9e6a045 100644 --- a/site/adv_learning/buy-pkt/index.html +++ b/site/adv_learning/buy-pkt/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/adv_learning/cryptoeconomics/index.html b/site/adv_learning/cryptoeconomics/index.html index df3cbe0..c0ddb59 100644 --- a/site/adv_learning/cryptoeconomics/index.html +++ b/site/adv_learning/cryptoeconomics/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/adv_learning/pktd-full-node/index.html b/site/adv_learning/pktd-full-node/index.html index b987297..db3604e 100644 --- a/site/adv_learning/pktd-full-node/index.html +++ b/site/adv_learning/pktd-full-node/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/adv_learning/sell-pkt/index.html b/site/adv_learning/sell-pkt/index.html index 2a32fcd..8c220cd 100644 --- a/site/adv_learning/sell-pkt/index.html +++ b/site/adv_learning/sell-pkt/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/adv_learning/swap-pkt-wrapped-pkt/index.html b/site/adv_learning/swap-pkt-wrapped-pkt/index.html index cc3530a..8b03711 100644 --- a/site/adv_learning/swap-pkt-wrapped-pkt/index.html +++ b/site/adv_learning/swap-pkt-wrapped-pkt/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/cjdns_websites/index.html b/site/cjdns_websites/index.html index 619dfdc..d78720c 100644 --- a/site/cjdns_websites/index.html +++ b/site/cjdns_websites/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/commercial/index.html b/site/commercial/index.html index 78e389c..d851391 100644 --- a/site/commercial/index.html +++ b/site/commercial/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/communication/index.html b/site/communication/index.html index 368d635..d74581a 100644 --- a/site/communication/index.html +++ b/site/communication/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/community/classifieds/index.html b/site/community/classifieds/index.html index deff1f8..efb9d65 100644 --- a/site/community/classifieds/index.html +++ b/site/community/classifieds/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/community/code_of_conduct/index.html b/site/community/code_of_conduct/index.html index 1b6c2fb..9feeab0 100644 --- a/site/community/code_of_conduct/index.html +++ b/site/community/code_of_conduct/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/community/ethica-communication-guidelines/index.html b/site/community/ethica-communication-guidelines/index.html index 1f5564e..c377713 100644 --- a/site/community/ethica-communication-guidelines/index.html +++ b/site/community/ethica-communication-guidelines/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/community/press-media-assets/index.html b/site/community/press-media-assets/index.html index 2f6e3ec..e5aa8b5 100644 --- a/site/community/press-media-assets/index.html +++ b/site/community/press-media-assets/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/dev/building-on-pkt/index.html b/site/dev/building-on-pkt/index.html index 21d6716..4eee7dc 100644 --- a/site/dev/building-on-pkt/index.html +++ b/site/dev/building-on-pkt/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/dev/cjdns/index.html b/site/dev/cjdns/index.html index 7a0da57..6282b24 100644 --- a/site/dev/cjdns/index.html +++ b/site/dev/cjdns/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/dev/cloud-isp/index.html b/site/dev/cloud-isp/index.html index a2a1dbc..488ef53 100644 --- a/site/dev/cloud-isp/index.html +++ b/site/dev/cloud-isp/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/dev/edge-points/index.html b/site/dev/edge-points/index.html index 52592cb..b93fa9f 100644 --- a/site/dev/edge-points/index.html +++ b/site/dev/edge-points/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/dev/packetcrypt/index.html b/site/dev/packetcrypt/index.html index 91e102f..613923e 100644 --- a/site/dev/packetcrypt/index.html +++ b/site/dev/packetcrypt/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/dev/pkt-lightning-deamon/index.html b/site/dev/pkt-lightning-deamon/index.html index e68fd89..8c5c5cb 100644 --- a/site/dev/pkt-lightning-deamon/index.html +++ b/site/dev/pkt-lightning-deamon/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/dev/pkt-vpn/index.html b/site/dev/pkt-vpn/index.html index 56f0aa3..fd082fd 100644 --- a/site/dev/pkt-vpn/index.html +++ b/site/dev/pkt-vpn/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/dev/tokenstrike/index.html b/site/dev/tokenstrike/index.html index e66274a..52f48d8 100644 --- a/site/dev/tokenstrike/index.html +++ b/site/dev/tokenstrike/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/dev/wiif-sharing/index.html b/site/dev/wiif-sharing/index.html index 8977613..c0cb753 100644 --- a/site/dev/wiif-sharing/index.html +++ b/site/dev/wiif-sharing/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/electrum/index.html b/site/electrum/index.html index bacec67..43e3aee 100644 --- a/site/electrum/index.html +++ b/site/electrum/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/index.html b/site/index.html index 2b1e4b1..852b041 100644 --- a/site/index.html +++ b/site/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + @@ -427,5 +445,5 @@ diff --git a/site/learn/network-steward/index.html b/site/learn/network-steward/index.html index 55df293..a33da99 100644 --- a/site/learn/network-steward/index.html +++ b/site/learn/network-steward/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/learn/packetcrypt/index.html b/site/learn/packetcrypt/index.html index a0dce84..887a715 100644 --- a/site/learn/packetcrypt/index.html +++ b/site/learn/packetcrypt/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/learn/pkt-cash/index.html b/site/learn/pkt-cash/index.html index 3359575..830d129 100644 --- a/site/learn/pkt-cash/index.html +++ b/site/learn/pkt-cash/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/learn/pkt-network/index.html b/site/learn/pkt-network/index.html index aea1680..4d03d1f 100644 --- a/site/learn/pkt-network/index.html +++ b/site/learn/pkt-network/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/learn/pkt/index.html b/site/learn/pkt/index.html index 790d498..51fcd99 100644 --- a/site/learn/pkt/index.html +++ b/site/learn/pkt/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/learn/wpkt/index.html b/site/learn/wpkt/index.html index 5453d2c..4890149 100644 --- a/site/learn/wpkt/index.html +++ b/site/learn/wpkt/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/mining/index.html b/site/mining/index.html index ae3cf50..a6d29dd 100644 --- a/site/mining/index.html +++ b/site/mining/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/mining/pool_setup_guide/index.html b/site/mining/pool_setup_guide/index.html index efe32b5..7d55568 100644 --- a/site/mining/pool_setup_guide/index.html +++ b/site/mining/pool_setup_guide/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/pktd/index.html b/site/pktd/index.html index 994511a..610a9ba 100644 --- a/site/pktd/index.html +++ b/site/pktd/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/pktd/migrating_from_electrum/index.html b/site/pktd/migrating_from_electrum/index.html index 1511d79..945e802 100644 --- a/site/pktd/migrating_from_electrum/index.html +++ b/site/pktd/migrating_from_electrum/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/pktd/pktwallet/index.html b/site/pktd/pktwallet/index.html index 155c315..853474f 100644 --- a/site/pktd/pktwallet/index.html +++ b/site/pktd/pktwallet/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/pktwalletgui/index.html b/site/pktwalletgui/index.html index 1a3a4e8..4751331 100644 --- a/site/pktwalletgui/index.html +++ b/site/pktwalletgui/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/running_infrastructure/cjdns_node/index.html b/site/running_infrastructure/cjdns_node/index.html new file mode 100644 index 0000000..c35d6d5 --- /dev/null +++ b/site/running_infrastructure/cjdns_node/index.html @@ -0,0 +1,468 @@ + + + + + + + + + + + + + How to Run a CJDNS Node - PKT Documentation + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + + + +

    Set up a CJDNS node

    +

    This guide will help you set up a CJDNS node on a server.

    +

    Requirements

    +
      +
    • A server running debian based Linux (preferrably Ubuntu 22.04) with docker installed
    • +
    +

    Steps

    +
      +
    1. Create a data directory where the server configuration will be stored.
    2. +
    +

    mkdir vpn_data

    +
      +
    1. Get the latest docker image
    2. +
    +

    docker pull pkteer/pkt-server

    +
      +
    1. Configure the server by running the following command:
    2. +
    +

    docker run -it --rm -v $(pwd)/vpn_data:/data pkteer/pkt-server /configure.sh --novpn

    +

    The configure process will create: +* a cjdroute.conf at data/cjdroute.conf +* PKT wallet at data/pktwallet/pkt/wallet.db +* store the wallet's seed phrase at data/pktwallet/pkt/seed.txt

    +

    configure.sh can take the following flags: +* --no-vpn: To configure the server without setting up the VPN server +* --with-pktd: To configure the server with a local PKT daemon +* --pktd-passwd= : To set a password for the PKT daemon

    +

    Alternativly you can edit the config.json file manually.

    +

    NOTE: Make sure to safely store your seed phrase in order to be able to import your wallet on your computer. And delete the seed.txt file after.

    +
      +
    1. Run the server by running the following commands:
    2. +
    +

    ./vpn_data/start.sh

    +

    This will start the server and may expose the following ports: +* cjdns port set from cjdroute.conf +* cjdns admin rpc port set from cjdroute.conf (default 11234) +* 8099 for anodevpn server +* 5201 for iperf3 +* 64764 for pktd

    + + + + +
    + +
    +
    + + + + + + + + + + + diff --git a/site/running_infrastructure/cjdns_website/index.html b/site/running_infrastructure/cjdns_website/index.html new file mode 100644 index 0000000..e282dd9 --- /dev/null +++ b/site/running_infrastructure/cjdns_website/index.html @@ -0,0 +1,487 @@ + + + + + + + + + + + + + How to Run a CJDNS Website - PKT Documentation + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + + + +

    How to set up your own self-hosted website on cjdns network.

    +

    The following setup has been tested on a Raspberry Pi 4.

    +
      +
    1. Go to https://yunohost.org/en/install
    2. +
    3. Select Raspberry Pi
    4. +
    5. Download the YunoHost image
    6. +
    7. Go to https://www.raspberrypi.com/news/raspberry-pi-imager-imaging-utility/
    8. +
    9. Download Pi Imager
    10. +
    11. Flash the YunoHost image to your SD card using the Pi Imager
    12. +
    13. Then insert the SD card into your Raspberry Pi and boot it up.
    14. +
    15. Access the YunoHost admin panel by going to https://yunohost.local
    16. +
    17. Start the post-installation process
    18. +
    19. In the Set main-domain select "I want a domain for local usage / test only"
    20. +
    21. Complete the post-installation process
    22. +
    23. Once the post-installation process is complete, go to the YunoHost admin panel and log in
    24. +
    25. Select the "Applications" tab and click on "Install"
    26. +
    27. Search for "wordpress", select it.
    28. +
    29. Scroll down and select "administrator for this site"
    30. +
    31. Click on "Install"
    32. +
    33. Upon completion go to "Applications" and click "Install" again
    34. +
    35. Scroll down on "Install custom app" and paste the following link: https://github.com/dkoukoul/cjdns_ynh
    36. +
    37. Click on "Install"
    38. +
    39. On completion your cjdns ipv6 address will be displayed, copy it.
    40. +
    +

    Accessing your website

    +

    For anyone to access your cjdns site they need to be on the cjdns network, either by running cjdns on their device or by connecting to one of the VPN exits that allow access to cjdns network.

    +
      +
    1. Go to a browser and paste the ipv6 address after http and inside square brackets like this: http://[your-cjdns_ipv6_address]/blog
    2. +
    +

    NOTE: Make sure to remove any leading 0 from each section of the ipv6 address. +for example if your cjdns ipv6 is ending with ... :0ad2 it should be ... :ad2 in the browser.

    +

    Set up a domain for your site

    +

    First you will need to own a domain name for example "pkt.net". +Select one of the VPN exits that have a running SNI proxy and copy their IPv4 address.

    +

    Go to your domain registrar and set up the following DNS records:

    +
      +
    • A record: pkt.net -> [VPN server IPv4 address]
    • +
    • AAAA record: h.pkt.net -> [your-cjdns_ipv6_address]
    • +
    +

    for example if the VPN server's IPv4 address is 51.79.51.242 your domain is pkt.net and your cjdns IPv6 address where your site is running is fc04:8212:c1fa:94ad:e554:7bac:1264:0ad2

    +

    your A record should be: +* A record: pkt.net -> 51.79.51.242 +and your AAAA record should be: +* AAAA record: h.pkt.net -> fc04:8212:c1fa:94ad:e554:7bac:1264:ad2

    +

    Register domain with VPN server

    +
      +
    1. Request the VPN server operator to add your domain to their SNI proxy by editing the following command replacing it with your domain and cjdns ipv6 address and the VPN server's IPv4 address:
    2. +
    +

    curl -X POST --H "Content-Type: application/json" -d '{"domain":"domain.com","cjdnsIpv6":"your_cjdns_ipv6_address"} http://[VPN server IPv4 address]:8099/api/0.4/server/domain/add/

    +

    Set up the domain in yunohost

    +
      +
    1. Log in into your yunohost admin panel.
    2. +
    3. Go to "Domains" and click on "Add domain"
    4. +
    5. Click on " I want to add a domain I own, or a subdomain" add your domain and click on "Add"
    6. +
    7. Select your newly added domain.
    8. +
    9. Go to tab "Certificates"
    10. +
    11. Click on "Ignore diagnosis checks" and then you can request a certificate for your domain by going clicking "Install Let's Encrypt certificate".
    12. +
    + + + + +
    + +
    +
    + + + + + + + + + + + diff --git a/site/running_infrastructure/vpn_server/index.html b/site/running_infrastructure/vpn_server/index.html new file mode 100644 index 0000000..5a0a461 --- /dev/null +++ b/site/running_infrastructure/vpn_server/index.html @@ -0,0 +1,463 @@ + + + + + + + + + + + + + How to Run a VPN Server - PKT Documentation + + + + + + + + + + + + + + + + + + +
    + +
    + +
    + + + + + + +

    Set up your own VPN Server

    +

    This guide will help you set up a CJDNS node with PKT wallet and the following services: +* AnodeVPN server +* IKEv2 Ipsec VPN server +* OpenVPN server +* SNI proxy

    +

    Requirements

    +
      +
    • A server running debian based Linux (preferrably Ubuntu 22.04) with docker installed
    • +
    +

    Steps

    +
      +
    1. Create a data directory where the server configuration will be stored.
    2. +
    +

    mkdir vpn_data

    +
      +
    1. Configure the server by running the following command:
    2. +
    +

    docker run -it --rm -v $(pwd)/vpn_data:/data pkteer/pkt-server /configure.sh

    +
      +
    1. Configure various service by running the following command:
    2. +
    +

    ./vpn_data/setup.sh

    +

    The script will prompt you to set up various flags and values needed for setting up the services the first time.

    +
      +
    1. Run the server by running the following commands:
    2. +
    +

    ./vpn_data/start-vpn.sh

    +

    NOTE: It can take a few minutes on the first run for the server to set up all the services.

    +

    Monitoring the server

    +

    You can view the progress of the server by running:

    +

    docker logs -f pkt-server

    +

    You can also check the status of all services by running:

    +

    ./vpn_data/status.sh

    + + + + +
    + +
    +
    + + + + + + + + + + + diff --git a/site/search/search_index.json b/site/search/search_index.json index 0184aa9..be84437 100644 --- a/site/search/search_index.json +++ b/site/search/search_index.json @@ -1 +1 @@ -{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"PKT Documentation \u00b6 Documentation for the PKT project Wallet setup \u00b6 There are several wallets which you can choose from, the easiest to set up are PKT Electrum which has a Graphical UI and supports Windows, Mac and Linux. PKT Wallet which has a Graphical UI and supports MacOS and works great with miners. Pkt.world Wallet which has a Graphical UI for Windows, works with miners and includes a built-in miner. You can also setup PKT Wallet which is command line only but has greater scalability and privacy features. Mining \u00b6 PKT is mined using the PacketCrypt bandwidth hard mining algorithm. You can learn how to mine on the Mining page. Running a pktd instance \u00b6 You can setup a pktd instance using the instructions on pktd . Help and Community \u00b6 To get help with the technologies in the PKT project or to hang out in the community join us on the PKT Chat project chat.","title":"Home"},{"location":"#pkt-documentation","text":"Documentation for the PKT project","title":"PKT Documentation"},{"location":"#wallet-setup","text":"There are several wallets which you can choose from, the easiest to set up are PKT Electrum which has a Graphical UI and supports Windows, Mac and Linux. PKT Wallet which has a Graphical UI and supports MacOS and works great with miners. Pkt.world Wallet which has a Graphical UI for Windows, works with miners and includes a built-in miner. You can also setup PKT Wallet which is command line only but has greater scalability and privacy features.","title":"Wallet setup"},{"location":"#mining","text":"PKT is mined using the PacketCrypt bandwidth hard mining algorithm. You can learn how to mine on the Mining page.","title":"Mining"},{"location":"#running-a-pktd-instance","text":"You can setup a pktd instance using the instructions on pktd .","title":"Running a pktd instance"},{"location":"#help-and-community","text":"To get help with the technologies in the PKT project or to hang out in the community join us on the PKT Chat project chat.","title":"Help and Community"},{"location":"PKT_FAQ/","text":"PKT FAQ \u00b6 This is a community defined FAQ, edit this page to improve it. General \u00b6 What is PKT? \u00b6 PKT allows users to monetize their unused internet bandwidth. By participating in the PKT Network you are helping to build a faster, stronger, and more secure, decentralized network. What is PKT Cash? \u00b6 PKT is a native mined coin based on an open source project. There are multiple companies in the PKT ecosystem but no company \"behind PKT.\" What wallets are available? \u00b6 If you're not mining, the best wallet is PKT Electrum , which was developed as part of a Network Steward funded project and supports Windows, Mac and Linux. However, mining into electrum will break it and if you do it, you will need to export your keys to recover funds. If you use Microsoft Windows, the best wallet to use is PKT.world wallet If you use Mac and want to mine, you can use Zulu Wallet If you are using a server, you can use the CLI wallet which is the base code for the PKT.world wallet and Zulu wallet. There is an ongoing wallet called MatterFi which is based on the powerful OpenTransactions technology. You are invited to help beta-test this wallet in #matterfi on pkt.chat. Where can I buy or sell PKT? \u00b6 Currently there are two ways to buy and sell, you can buy wrapped PKT on pancakeswap and then un-wrap it using the ODAPP (NOTE: in order to use wrapped PKT, you will need Binance Smart Chain BNB to pay gas fees. Also note that ODAPP charges 3.5% when wrapping or unwrapping) If you would like a more human experience of buying or selling, you can come to ye ol' telegram chat where PKT has been traded since the beginning. Remember that telegram is a place where scammers lurk, so always read and follow the guidelines and always use escrow, even after you have traded with somebody multiple times. What is the path towards being publicly listed on exchanges? \u00b6 PKT is a decentralized project like Bitcoin, not a centralized token. Community members are having conversations with different exchanges and you can do it too. There are no more details at this time about the particular listing initiatives. The differentiating factors vs. Bitcoin and other crypto coins? \u00b6 The differences from Bitcoin are: PacketCrypt bandwidth hard proof of work replaces SHA-256 1 minute block time 6 billion coins total Mining yields decrease 10% every 100 days in what is called the decimation 20% of each mined block goes to the Network Steward wallet, which funds R&D of the ecosystem Vision \u00b6 What is value proposition of PKT? \u00b6 The PKT project is focused on building a decentralized bandwidth marketplace to decouple the business and technical aspects of internet service from the physical aspect of maintaining infrastructure. The fundamental value is division of labor and lowering the barrier of entry for internet service competition. What is a Cloud ISP? \u00b6 There is an explanation video about Cloud ISPs on Twitter. The role of a Cloud ISP is to perform the technical and administrative aspects of internet service so that the aspects of infrastructure operation can be done by individuals, small businesses and community groups. What do you see as the greatest challenge to PKTs long-term success? \u00b6 Historically, crypto projects achieve the best results when they are focused on use cases and utility. PKT is focusing on building a decentralized bandwidth marketplace where people can earn PKT with their internet and use PKT to pay for connectivity. The greatest challenge is getting the next billion people connected to the internet. What are the applications and software currently being explored? \u00b6 A free to use VPN service called AnodeVPN will be launched in 2021, and users can pay for their VPN speed with PKT Cash. Internet bandwidth sharing and mesh networking are also currently in the stages of development. Mining \u00b6 How is PKT mined? \u00b6 PKT is mined using the novel PacketCrypt bandwidth-hard mining algorithm which requires bandwidth to mine. It uses a combination of CPU and bandwidth, you get an advantage by working together with other miners which requires bandwidth. How will the growth in mining impact the coin? \u00b6 As more people mine PacketCrypt, they will need to invest in more network infrastructure which will become useful later on for making the internet faster and more accessible. What wallet do I use for mining? \u00b6 For mining it's recommended to use the command line PKTWallet due to the amount of mining transactions and it's ability to scale. If you use a Mac then you can also use the PKT-Cash-Wallet for MacOS. Is there an easy way to start mining? \u00b6 There are mining instructions for mining on the PKT website. PktPal is a business in the community which offers turn-key mining solutions. Do miners mining on a single pool have any benefit over miners mining on multi pool? \u00b6 Multi-pool mining means submitting the exact same announcements to multiple pools. So if you have the bandwidth available it will always benefit you to mine in all of the major pools. Network Steward \u00b6 What is the Network Steward? \u00b6 The Network Steward is part of the consensus rules of the PKT blockchain. 20% of every newly mined block goes to a wallet address and then those coins are 100% paid out in grants to help build open-source technology and develop the PKT Network. Network Steward funds must be deployed within 90 days or else they are burned. This address was initially set to a multi-signature group, but it can be changed by a PoS based vote process. Who is the Network Steward currently? \u00b6 A group of 5 volunteers including the original author of the code. More information can be found [here]: (https://pkt.cash/network-steward) How is the (current) Network Steward using the funds? \u00b6 The Network Steward follows a project evaluation process. No funds have ever been deployed except to fund projects which were proposed by members of the public in an open competitive process. The Network Steward operates with full transparency. Every transaction made by the Network Steward can be seen in the block explorer and is refered to in the Network Steward's github repository explaining the project which that transaction helped to fund. Has the Network Steward burned any funds? \u00b6 You can check out the stats on burned coins in the block explorer Network Steward page . How do I submit a proposal? \u00b6 There are currently two ways to propose a project to the PKT Network Steward, if your project is large and has the benefit of accountants to be able to verify that the money has been spent appropriately, you can make a proposal directly to the NS through the NS github Network Steward's Github . The NS opens calls from time to time with a specified budget and during these calls anyone can apply. If you want to propose a smaller project and have the accounting and official reporting managed for you, you can propose to the User Operated Internet fund which is funded by the Network Steward but is administored by NLnet, a well respected public benefit organization which is experienced at managing these types of projects. Dilligence \u00b6 Who is the creator? Is he actively involved? What's his ownership? \u00b6 PKT was created by Caleb James DeLisle, the creator of cjdns. Cjdns is the only decentralized mesh networking protocol which is designed to function in even if some of the nodes in the network are adversarial. Caleb has been mining PKT similarly to everybody else in the project. Who stands to benefit the most from growth and adaption? \u00b6 The early miners and adopters of PKT will benefit greatly. PKT also benefits everybody because it will lead to a lower cost and highly competitive internet service ecosystem. Are there any regulatory or compliance liabilities? \u00b6 PKT is a fully decentralized fork of Bitcoin, so it is similarly considered to be a commodity. What legal disclosures need to made with investments into this? Or are there none? \u00b6 Because PKT is a fully decentralized clone of the Bitcoin codebase, the legal and regulatory framing is probably similar. Communication \u00b6 Has any branding or marketing already been completed? \u00b6 PKT is a decentralized project so there is no official brand for PKT, however the website pkt.cash, logos, and other materials were developed as part of a Network Steward funded project and are usable under the Creative Commons license. Are any brand ambassadors already engaged? \u00b6 PKT is not a centralized project so anybody can be an ambassador. There are a number of companies and initiatives which currently exist in the PKT ecosystem including AnodeVPN and Pkt Pal. Commercial \u00b6 How can I contact the PKT Team \u00b6 You are the PKT team, PKT is a fully decentralized project like Bitcoin, so everyone is the team. The bad news is there is no central authority who can write you a check, but the good news is there are a few businesses in the PKT ecosystem who might be prepared to buy your services. See PKT Commercial for a (non-exhaustive) list. Can I build X with PKT? \u00b6 YES , the PKT community encourages all types of (legal, responsible) business activity in the PKT ecosystem. The ODAPP bridge was created by a community member and was not in the original PKT vision but this bridge is now an important part of the infrastructure of the PKT ecosystem. You can also build your commercial venture and the we in the PKT community will do what we can to help you be successful.","title":"PKT FAQ"},{"location":"PKT_FAQ/#pkt-faq","text":"This is a community defined FAQ, edit this page to improve it.","title":"PKT FAQ"},{"location":"PKT_FAQ/#general","text":"","title":"General"},{"location":"PKT_FAQ/#what-is-pkt","text":"PKT allows users to monetize their unused internet bandwidth. By participating in the PKT Network you are helping to build a faster, stronger, and more secure, decentralized network.","title":"What is PKT?"},{"location":"PKT_FAQ/#what-is-pkt-cash","text":"PKT is a native mined coin based on an open source project. There are multiple companies in the PKT ecosystem but no company \"behind PKT.\"","title":"What is PKT Cash?"},{"location":"PKT_FAQ/#what-wallets-are-available","text":"If you're not mining, the best wallet is PKT Electrum , which was developed as part of a Network Steward funded project and supports Windows, Mac and Linux. However, mining into electrum will break it and if you do it, you will need to export your keys to recover funds. If you use Microsoft Windows, the best wallet to use is PKT.world wallet If you use Mac and want to mine, you can use Zulu Wallet If you are using a server, you can use the CLI wallet which is the base code for the PKT.world wallet and Zulu wallet. There is an ongoing wallet called MatterFi which is based on the powerful OpenTransactions technology. You are invited to help beta-test this wallet in #matterfi on pkt.chat.","title":"What wallets are available?"},{"location":"PKT_FAQ/#where-can-i-buy-or-sell-pkt","text":"Currently there are two ways to buy and sell, you can buy wrapped PKT on pancakeswap and then un-wrap it using the ODAPP (NOTE: in order to use wrapped PKT, you will need Binance Smart Chain BNB to pay gas fees. Also note that ODAPP charges 3.5% when wrapping or unwrapping) If you would like a more human experience of buying or selling, you can come to ye ol' telegram chat where PKT has been traded since the beginning. Remember that telegram is a place where scammers lurk, so always read and follow the guidelines and always use escrow, even after you have traded with somebody multiple times.","title":"Where can I buy or sell PKT?"},{"location":"PKT_FAQ/#what-is-the-path-towards-being-publicly-listed-on-exchanges","text":"PKT is a decentralized project like Bitcoin, not a centralized token. Community members are having conversations with different exchanges and you can do it too. There are no more details at this time about the particular listing initiatives.","title":"What is the path towards being publicly listed on exchanges?"},{"location":"PKT_FAQ/#the-differentiating-factors-vs-bitcoin-and-other-crypto-coins","text":"The differences from Bitcoin are: PacketCrypt bandwidth hard proof of work replaces SHA-256 1 minute block time 6 billion coins total Mining yields decrease 10% every 100 days in what is called the decimation 20% of each mined block goes to the Network Steward wallet, which funds R&D of the ecosystem","title":"The differentiating factors vs. Bitcoin and other crypto coins?"},{"location":"PKT_FAQ/#vision","text":"","title":"Vision"},{"location":"PKT_FAQ/#what-is-value-proposition-of-pkt","text":"The PKT project is focused on building a decentralized bandwidth marketplace to decouple the business and technical aspects of internet service from the physical aspect of maintaining infrastructure. The fundamental value is division of labor and lowering the barrier of entry for internet service competition.","title":"What is value proposition of PKT?"},{"location":"PKT_FAQ/#what-is-a-cloud-isp","text":"There is an explanation video about Cloud ISPs on Twitter. The role of a Cloud ISP is to perform the technical and administrative aspects of internet service so that the aspects of infrastructure operation can be done by individuals, small businesses and community groups.","title":"What is a Cloud ISP?"},{"location":"PKT_FAQ/#what-do-you-see-as-the-greatest-challenge-to-pkts-long-term-success","text":"Historically, crypto projects achieve the best results when they are focused on use cases and utility. PKT is focusing on building a decentralized bandwidth marketplace where people can earn PKT with their internet and use PKT to pay for connectivity. The greatest challenge is getting the next billion people connected to the internet.","title":"What do you see as the greatest challenge to PKTs long-term success?"},{"location":"PKT_FAQ/#what-are-the-applications-and-software-currently-being-explored","text":"A free to use VPN service called AnodeVPN will be launched in 2021, and users can pay for their VPN speed with PKT Cash. Internet bandwidth sharing and mesh networking are also currently in the stages of development.","title":"What are the applications and software currently being explored?"},{"location":"PKT_FAQ/#mining","text":"","title":"Mining"},{"location":"PKT_FAQ/#how-is-pkt-mined","text":"PKT is mined using the novel PacketCrypt bandwidth-hard mining algorithm which requires bandwidth to mine. It uses a combination of CPU and bandwidth, you get an advantage by working together with other miners which requires bandwidth.","title":"How is PKT mined?"},{"location":"PKT_FAQ/#how-will-the-growth-in-mining-impact-the-coin","text":"As more people mine PacketCrypt, they will need to invest in more network infrastructure which will become useful later on for making the internet faster and more accessible.","title":"How will the growth in mining impact the coin?"},{"location":"PKT_FAQ/#what-wallet-do-i-use-for-mining","text":"For mining it's recommended to use the command line PKTWallet due to the amount of mining transactions and it's ability to scale. If you use a Mac then you can also use the PKT-Cash-Wallet for MacOS.","title":"What wallet do I use for mining?"},{"location":"PKT_FAQ/#is-there-an-easy-way-to-start-mining","text":"There are mining instructions for mining on the PKT website. PktPal is a business in the community which offers turn-key mining solutions.","title":"Is there an easy way to start mining?"},{"location":"PKT_FAQ/#do-miners-mining-on-a-single-pool-have-any-benefit-over-miners-mining-on-multi-pool","text":"Multi-pool mining means submitting the exact same announcements to multiple pools. So if you have the bandwidth available it will always benefit you to mine in all of the major pools.","title":"Do miners mining on a single pool have any benefit over miners mining on multi pool?"},{"location":"PKT_FAQ/#network-steward","text":"","title":"Network Steward"},{"location":"PKT_FAQ/#what-is-the-network-steward","text":"The Network Steward is part of the consensus rules of the PKT blockchain. 20% of every newly mined block goes to a wallet address and then those coins are 100% paid out in grants to help build open-source technology and develop the PKT Network. Network Steward funds must be deployed within 90 days or else they are burned. This address was initially set to a multi-signature group, but it can be changed by a PoS based vote process.","title":"What is the Network Steward?"},{"location":"PKT_FAQ/#who-is-the-network-steward-currently","text":"A group of 5 volunteers including the original author of the code. More information can be found [here]: (https://pkt.cash/network-steward)","title":"Who is the Network Steward currently?"},{"location":"PKT_FAQ/#how-is-the-current-network-steward-using-the-funds","text":"The Network Steward follows a project evaluation process. No funds have ever been deployed except to fund projects which were proposed by members of the public in an open competitive process. The Network Steward operates with full transparency. Every transaction made by the Network Steward can be seen in the block explorer and is refered to in the Network Steward's github repository explaining the project which that transaction helped to fund.","title":"How is the (current) Network Steward using the funds?"},{"location":"PKT_FAQ/#has-the-network-steward-burned-any-funds","text":"You can check out the stats on burned coins in the block explorer Network Steward page .","title":"Has the Network Steward burned any funds?"},{"location":"PKT_FAQ/#how-do-i-submit-a-proposal","text":"There are currently two ways to propose a project to the PKT Network Steward, if your project is large and has the benefit of accountants to be able to verify that the money has been spent appropriately, you can make a proposal directly to the NS through the NS github Network Steward's Github . The NS opens calls from time to time with a specified budget and during these calls anyone can apply. If you want to propose a smaller project and have the accounting and official reporting managed for you, you can propose to the User Operated Internet fund which is funded by the Network Steward but is administored by NLnet, a well respected public benefit organization which is experienced at managing these types of projects.","title":"How do I submit a proposal?"},{"location":"PKT_FAQ/#dilligence","text":"","title":"Dilligence"},{"location":"PKT_FAQ/#who-is-the-creator-is-he-actively-involved-whats-his-ownership","text":"PKT was created by Caleb James DeLisle, the creator of cjdns. Cjdns is the only decentralized mesh networking protocol which is designed to function in even if some of the nodes in the network are adversarial. Caleb has been mining PKT similarly to everybody else in the project.","title":"Who is the creator? Is he actively involved? What's his ownership?"},{"location":"PKT_FAQ/#who-stands-to-benefit-the-most-from-growth-and-adaption","text":"The early miners and adopters of PKT will benefit greatly. PKT also benefits everybody because it will lead to a lower cost and highly competitive internet service ecosystem.","title":"Who stands to benefit the most from growth and adaption?"},{"location":"PKT_FAQ/#are-there-any-regulatory-or-compliance-liabilities","text":"PKT is a fully decentralized fork of Bitcoin, so it is similarly considered to be a commodity.","title":"Are there any regulatory or compliance liabilities?"},{"location":"PKT_FAQ/#what-legal-disclosures-need-to-made-with-investments-into-this-or-are-there-none","text":"Because PKT is a fully decentralized clone of the Bitcoin codebase, the legal and regulatory framing is probably similar.","title":"What legal disclosures need to made with investments into this? Or are there none?"},{"location":"PKT_FAQ/#communication","text":"","title":"Communication"},{"location":"PKT_FAQ/#has-any-branding-or-marketing-already-been-completed","text":"PKT is a decentralized project so there is no official brand for PKT, however the website pkt.cash, logos, and other materials were developed as part of a Network Steward funded project and are usable under the Creative Commons license.","title":"Has any branding or marketing already been completed?"},{"location":"PKT_FAQ/#are-any-brand-ambassadors-already-engaged","text":"PKT is not a centralized project so anybody can be an ambassador. There are a number of companies and initiatives which currently exist in the PKT ecosystem including AnodeVPN and Pkt Pal.","title":"Are any brand ambassadors already engaged?"},{"location":"PKT_FAQ/#commercial","text":"","title":"Commercial"},{"location":"PKT_FAQ/#how-can-i-contact-the-pkt-team","text":"You are the PKT team, PKT is a fully decentralized project like Bitcoin, so everyone is the team. The bad news is there is no central authority who can write you a check, but the good news is there are a few businesses in the PKT ecosystem who might be prepared to buy your services. See PKT Commercial for a (non-exhaustive) list.","title":"How can I contact the PKT Team"},{"location":"PKT_FAQ/#can-i-build-x-with-pkt","text":"YES , the PKT community encourages all types of (legal, responsible) business activity in the PKT ecosystem. The ODAPP bridge was created by a community member and was not in the original PKT vision but this bridge is now an important part of the infrastructure of the PKT ecosystem. You can also build your commercial venture and the we in the PKT community will do what we can to help you be successful.","title":"Can I build X with PKT?"},{"location":"cjdns_websites/","text":"Setup your website on cjdns network \u00b6 Install Yunohost by following the detailed instructions provided here . Once the installation is complete, log in as an administrator at yunohost.local . Perform a system update, which may take some time. Navigate to Tools -> Yunohost Settings -> Security, and under NGINX, disable \"Force HTTPS.\" Click Save to apply the changes. Reboot your Yunohost server to make the tun device available. Navigate to Tools->Shutdown and click Reboot. Return to yunohost.local after the update and navigate to the Applications menu. Click on Install, search for \"wordpress,\" select it, and proceed with the installation. Go back to the Applications menu, select \"All apps\" next to the search bar and then search for \"cjdns\", select it and install it. Once cjdns has installed your cjdns ipv6 will be displayed, Copy it. Ssh into your yunohost and edit your nginx configuration nano /etc/nginx/conf.d/[domain.com].conf there under the server section add your cjdns ipv6 as a server_name , make sure to put it with in square brackets [] and also remove any leading zeros from each section if there are any. For example: fc3d:2895:0b0c:cf4a:3d3b:216f:7268:a34a becomes [fc3d:2895:b0c:cf4a:3d3b:216f:7268:a34a] Save the conf file and run nginx -t to check for any errors and then `systemctl restart nginx` to restart the server. Congratulations now you have your new website available for everyone in the cjdns network. You can access it by using a browser and go to http://[your-cjdns-ipv6]/blog For example: `http://[fc3d:2895:b0c:cf4a:3d3b:216f:7268:a34a]/blog`","title":"Setup your website on cjdns network"},{"location":"cjdns_websites/#setup-your-website-on-cjdns-network","text":"Install Yunohost by following the detailed instructions provided here . Once the installation is complete, log in as an administrator at yunohost.local . Perform a system update, which may take some time. Navigate to Tools -> Yunohost Settings -> Security, and under NGINX, disable \"Force HTTPS.\" Click Save to apply the changes. Reboot your Yunohost server to make the tun device available. Navigate to Tools->Shutdown and click Reboot. Return to yunohost.local after the update and navigate to the Applications menu. Click on Install, search for \"wordpress,\" select it, and proceed with the installation. Go back to the Applications menu, select \"All apps\" next to the search bar and then search for \"cjdns\", select it and install it. Once cjdns has installed your cjdns ipv6 will be displayed, Copy it. Ssh into your yunohost and edit your nginx configuration nano /etc/nginx/conf.d/[domain.com].conf there under the server section add your cjdns ipv6 as a server_name , make sure to put it with in square brackets [] and also remove any leading zeros from each section if there are any. For example: fc3d:2895:0b0c:cf4a:3d3b:216f:7268:a34a becomes [fc3d:2895:b0c:cf4a:3d3b:216f:7268:a34a] Save the conf file and run nginx -t to check for any errors and then `systemctl restart nginx` to restart the server. Congratulations now you have your new website available for everyone in the cjdns network. You can access it by using a browser and go to http://[your-cjdns-ipv6]/blog For example: `http://[fc3d:2895:b0c:cf4a:3d3b:216f:7268:a34a]/blog`","title":"Setup your website on cjdns network"},{"location":"commercial/","text":"PKT Commercial \u00b6 This is a mostly un-moderated list of classified advertisements and offers. Buyer beware, anyone can contribute their own offer and pkt.cash does not verify them. Add yourself \u00b6 Make a Pull Request to This page to add your offer. Keep it short and to the point NO PICTURES, no color text, no big fonts Use the appropriate category Hardware \u00b6 Pktpal.com \u00b6 Buy a PKT Cube which will mine PKT with your unused internet and provides easy-to-use PkteerOS wallet. Hosting \u00b6 Space-hosting.net \u00b6 Mining servers for rent PKT Cloud Mining Service \u00b6 AMAPOOL.com \u00b6 Your best choice towards a fully automated PKT cloud mining solution.","title":"PKT Commercial"},{"location":"commercial/#pkt-commercial","text":"This is a mostly un-moderated list of classified advertisements and offers. Buyer beware, anyone can contribute their own offer and pkt.cash does not verify them.","title":"PKT Commercial"},{"location":"commercial/#add-yourself","text":"Make a Pull Request to This page to add your offer. Keep it short and to the point NO PICTURES, no color text, no big fonts Use the appropriate category","title":"Add yourself"},{"location":"commercial/#hardware","text":"","title":"Hardware"},{"location":"commercial/#pktpalcom","text":"Buy a PKT Cube which will mine PKT with your unused internet and provides easy-to-use PkteerOS wallet.","title":"Pktpal.com"},{"location":"commercial/#hosting","text":"","title":"Hosting"},{"location":"commercial/#space-hostingnet","text":"Mining servers for rent","title":"Space-hosting.net"},{"location":"commercial/#pkt-cloud-mining-service","text":"","title":"PKT Cloud Mining Service"},{"location":"commercial/#amapoolcom","text":"Your best choice towards a fully automated PKT cloud mining solution.","title":"AMAPOOL.com"},{"location":"communication/","text":"Ethical Communication Guidelines \u00b6 This is a guideline for ethical communications about the project. It is recognized that to accomplish the goals, it is imperative that there is a community who understands and uses the technology, so communication cannot be avoided. However, poor communication, even made with the best intentions, risks harming the reputation of the project and the general public. So these guidelines exist to help community members represent the project in the best way possible. A Far Higher Standard \u00b6 Within the cryptocurrency ecosystem, there are a significant number of outright criminal activities. Beyond those there is a wide grey area of communication activities which have not been subject to any regulatory enforcement, but still fall far outside of what these guidelines establish as ethical. Community members are cautioned that due to the scale of these \"grey\" activities, there is a large body of publications, influencers, marketers, \"shills\" and other professionals who, if consulted or emulated, are highly likely to put a person in ethical peril, because these guidelines establish a far higher standard of communication ethics than that which is generally considered to be legal. Principle of No Expected Return \u00b6 It is acknowledged that buying, selling and mining are central aspects of cryptocurrency use, so it is difficult to effectively communicate about the project without ever addressing reasons why a person might do these things. Therefore these guidelines offer a pre-approved narrative which is considered to be maximally protective of the reputation of the project while also providing a healthy perspective regarding the risks associated with cryptocurrency. The Principle of No Expected Return is that one should buy or mine a cryptocurrency if and only if they believe strongly enough in the vision of the project that they would be proud to own the coin even if they were never able to sell it. In the early days of Bitcoin, it was widely believed that it would be legislated out of existence or otherwise collapse, and so this principle was pervasive throughout the community. Many people chose to hold Bitcoin as a political statement regarding the morality of modern financial institutions, especially after the 2008 financial crisis. The key components of the Principle of No Expected Return are: * A clear understanding of what the technology is and what it is not. * A belief in the social change which that technology can realistically facilitate. * The mental and financial preparedness to lose any money or effort that is used to acquire the coin, as one has when one makes a donation. When you\u2019re considering buying a coin, you need to ask yourself: If you were to lose everything you put into a coin, would you look back on the day you bought it, proud to have been a part of the project at that time? If the answer is no, then you\u2019re either planning to buy too much, or you\u2019re just not ready. Guidelines \u00b6 Dishonest, intentionally misleading, or otherwise unlawful communication is obviously unethical, but beyond that there is no clear definition for unethical communication, though one could characterise it in the words of Justice Stewart, \"I know it when I see it\". These non-exhaustive guidelines exist to give community members an understanding of the types of communication which are most likely to be unethical. They are listed in order of importance with the most important first. Communications which follow the letter, but not the spirit, of these guidelines are unethical. One example of this is token disclaimers such as \"this is not financial advice\". Disclaimers can be useful for helping a person understand the limitations and caveats of a communication, but a token disclaimer exists more to make the communicator seem innocent than to help the audience have a clearer understanding. The use of fine print, or disclaimers which \"feel out of place\" in the overall communication should be regarded as red flags, and communicators using these should review the objectives of their message and whether it is being communicated clearly. Communications which a person of sound judgement could plausibly interpret as presenting a low risk low effort opportunity to make money , or \u201csomething for nothing\u201d, are unethical. Presenting an opportunity can take many forms including implication though specific selection of facts, or an over-celebratory tone. Generally speaking, communications should be explicit about their objective so that there is minimal chance of mis-interpretation. Communications which a person suffering impaired judgement has an unusually high likelihood of interpreting as a low risk low effort opportunity to make money are unethical. Topics like \u201cwinning\u201d, \u201cpump\u201d, \u201cFOMO\u201d, \u201cYOLO\u201d (spend all of your money), \u201cmoon\u201d, and the idea of being rich, may strike the average person as nothing more than a bit of low-culture humour, but for a pathological gambler these can trigger a harmful thought process and should be avoided. Communications related to investment and trading of the coin should be addressed to investors and traders \u2014 professionals who know how hard it is to reliably beat the market and who make decisions based on their own unique portfolio and risk management strategy. Any kind of communication around these topics which has a celebratory tone, or which could reasonably be interpreted as investment advice is not ethical. Communications which focus entirely on explaining a piece of technology, without any mention or implication of buying, selling, price, or potential future growth (including growth in usage of the technology), are probably ethical. Communications which address the topic of buying, selling or mining, but are specifically focused on the Principle of No Expected Return, are probably ethical. Examples to Avoid \u00b6 These passages are examples of the type of communication which is likely to be problematic. Context is key, and in the context of a communication which clearly transmits an ethical core message, a passing mention of money probably does not make the whole communication unethical. But if the core message is not communicated with adequate clarity, then even the slightest mention of topics like the following may make the communication unethical. \"price has grown by 50% over the past 3 months\" \"George has made $700 mining with his old computer\" \"reaping the rewards for something you put zero effort in!\"\" \"build a fund for rainy days\" \"earning passive income at any time of day, even when sleeping\" \"early adopters have the most to gain\" \"miners who accumulate the coin are rewarded whenever there is significant price appreciation\" \"so many people trust cryptocurrency investment\" \"gain financially by facilitating connectivity\" While some of these statements may be factual, they share a common narrative that there is an opportunity, it is easy, and it leads to making money. This is a stark contrast from the Principle of No Expected Return. Better Examples \u00b6 Honest communications addressing topics like the following are more likely to be ethical. \"price has been on the rise, but this can be affected by current events outside the project, so core community members are more focused on continuous progress toward the goal\" \"'I pay for my internet, so I might as well use it\"', said George who has been mining with his old computer\" \"we all know internet is over-priced, but now there is a community of people trying to do something about it\" \"'I know cryptocurrencies are risky, and tomorrow it could all be worth nothing, but I'm spending money I can afford on a something I believe in' said Tom, who recently bought coins\" \"the control that big telecoms have over our everyday lives can make people feel powerless, but now there\u2019s an easy way to push back\" \"sometimes the price goes up and sometimes it goes down. Being part of the community is about believing that democratised internet is possible\"","title":"Ethical Communication Guidelines"},{"location":"communication/#ethical-communication-guidelines","text":"This is a guideline for ethical communications about the project. It is recognized that to accomplish the goals, it is imperative that there is a community who understands and uses the technology, so communication cannot be avoided. However, poor communication, even made with the best intentions, risks harming the reputation of the project and the general public. So these guidelines exist to help community members represent the project in the best way possible.","title":"Ethical Communication Guidelines"},{"location":"communication/#a-far-higher-standard","text":"Within the cryptocurrency ecosystem, there are a significant number of outright criminal activities. Beyond those there is a wide grey area of communication activities which have not been subject to any regulatory enforcement, but still fall far outside of what these guidelines establish as ethical. Community members are cautioned that due to the scale of these \"grey\" activities, there is a large body of publications, influencers, marketers, \"shills\" and other professionals who, if consulted or emulated, are highly likely to put a person in ethical peril, because these guidelines establish a far higher standard of communication ethics than that which is generally considered to be legal.","title":"A Far Higher Standard"},{"location":"communication/#principle-of-no-expected-return","text":"It is acknowledged that buying, selling and mining are central aspects of cryptocurrency use, so it is difficult to effectively communicate about the project without ever addressing reasons why a person might do these things. Therefore these guidelines offer a pre-approved narrative which is considered to be maximally protective of the reputation of the project while also providing a healthy perspective regarding the risks associated with cryptocurrency. The Principle of No Expected Return is that one should buy or mine a cryptocurrency if and only if they believe strongly enough in the vision of the project that they would be proud to own the coin even if they were never able to sell it. In the early days of Bitcoin, it was widely believed that it would be legislated out of existence or otherwise collapse, and so this principle was pervasive throughout the community. Many people chose to hold Bitcoin as a political statement regarding the morality of modern financial institutions, especially after the 2008 financial crisis. The key components of the Principle of No Expected Return are: * A clear understanding of what the technology is and what it is not. * A belief in the social change which that technology can realistically facilitate. * The mental and financial preparedness to lose any money or effort that is used to acquire the coin, as one has when one makes a donation. When you\u2019re considering buying a coin, you need to ask yourself: If you were to lose everything you put into a coin, would you look back on the day you bought it, proud to have been a part of the project at that time? If the answer is no, then you\u2019re either planning to buy too much, or you\u2019re just not ready.","title":"Principle of No Expected Return"},{"location":"communication/#guidelines","text":"Dishonest, intentionally misleading, or otherwise unlawful communication is obviously unethical, but beyond that there is no clear definition for unethical communication, though one could characterise it in the words of Justice Stewart, \"I know it when I see it\". These non-exhaustive guidelines exist to give community members an understanding of the types of communication which are most likely to be unethical. They are listed in order of importance with the most important first. Communications which follow the letter, but not the spirit, of these guidelines are unethical. One example of this is token disclaimers such as \"this is not financial advice\". Disclaimers can be useful for helping a person understand the limitations and caveats of a communication, but a token disclaimer exists more to make the communicator seem innocent than to help the audience have a clearer understanding. The use of fine print, or disclaimers which \"feel out of place\" in the overall communication should be regarded as red flags, and communicators using these should review the objectives of their message and whether it is being communicated clearly. Communications which a person of sound judgement could plausibly interpret as presenting a low risk low effort opportunity to make money , or \u201csomething for nothing\u201d, are unethical. Presenting an opportunity can take many forms including implication though specific selection of facts, or an over-celebratory tone. Generally speaking, communications should be explicit about their objective so that there is minimal chance of mis-interpretation. Communications which a person suffering impaired judgement has an unusually high likelihood of interpreting as a low risk low effort opportunity to make money are unethical. Topics like \u201cwinning\u201d, \u201cpump\u201d, \u201cFOMO\u201d, \u201cYOLO\u201d (spend all of your money), \u201cmoon\u201d, and the idea of being rich, may strike the average person as nothing more than a bit of low-culture humour, but for a pathological gambler these can trigger a harmful thought process and should be avoided. Communications related to investment and trading of the coin should be addressed to investors and traders \u2014 professionals who know how hard it is to reliably beat the market and who make decisions based on their own unique portfolio and risk management strategy. Any kind of communication around these topics which has a celebratory tone, or which could reasonably be interpreted as investment advice is not ethical. Communications which focus entirely on explaining a piece of technology, without any mention or implication of buying, selling, price, or potential future growth (including growth in usage of the technology), are probably ethical. Communications which address the topic of buying, selling or mining, but are specifically focused on the Principle of No Expected Return, are probably ethical.","title":"Guidelines"},{"location":"communication/#examples-to-avoid","text":"These passages are examples of the type of communication which is likely to be problematic. Context is key, and in the context of a communication which clearly transmits an ethical core message, a passing mention of money probably does not make the whole communication unethical. But if the core message is not communicated with adequate clarity, then even the slightest mention of topics like the following may make the communication unethical. \"price has grown by 50% over the past 3 months\" \"George has made $700 mining with his old computer\" \"reaping the rewards for something you put zero effort in!\"\" \"build a fund for rainy days\" \"earning passive income at any time of day, even when sleeping\" \"early adopters have the most to gain\" \"miners who accumulate the coin are rewarded whenever there is significant price appreciation\" \"so many people trust cryptocurrency investment\" \"gain financially by facilitating connectivity\" While some of these statements may be factual, they share a common narrative that there is an opportunity, it is easy, and it leads to making money. This is a stark contrast from the Principle of No Expected Return.","title":"Examples to Avoid"},{"location":"communication/#better-examples","text":"Honest communications addressing topics like the following are more likely to be ethical. \"price has been on the rise, but this can be affected by current events outside the project, so core community members are more focused on continuous progress toward the goal\" \"'I pay for my internet, so I might as well use it\"', said George who has been mining with his old computer\" \"we all know internet is over-priced, but now there is a community of people trying to do something about it\" \"'I know cryptocurrencies are risky, and tomorrow it could all be worth nothing, but I'm spending money I can afford on a something I believe in' said Tom, who recently bought coins\" \"the control that big telecoms have over our everyday lives can make people feel powerless, but now there\u2019s an easy way to push back\" \"sometimes the price goes up and sometimes it goes down. Being part of the community is about believing that democratised internet is possible\"","title":"Better Examples"},{"location":"units/","text":"PKT Units and Fees \u00b6 As with all blockchains, every transaction of PKT is exact, however unlike other blockchains, the number of atomic units in the PKT coin is not a power of 10. With Bitcoin there are 100,000,000 atomic units (\"satoshis\") per bitcoin. With PKT there are 2 to the 30th power ( 1,073,741,824 ) atomic units. While this is strange number in base-10, in binary it is a perfectly even 1 followed by thirty zeros. The binary nature of PKT has a few caveats, for example it means sending 0.01 PKT is actually impossible. This is because 0.01 would corrispond to 10,737,418.24 atomic units. Since they are atomic (indivisible), this must be rounded to the nearest whole number: 10,737,418 . When this divided by 2 30 , it results in 0.009999999776482582 . Therefore, all GUI wallets and explorers adopt the following convension: PKT amounts are always expressed with two decimal places and rounded to nearest, so 1,084,479,242 atomic units is displayed as 1.01 PKT . If the amount is less than 1 PKT , the amount is displayed as milli-pkt or mPKT and multiplied by 1,000 , so 10,737,418 atomic units is displayed as 10.00 mPKT If the amount is less than 1 mPKT , the amount is displayed as micro-pkt or \u03bcPKT and multiplied by 1,000,000 , so 107,374 atomic units is displayed as 100.00 \u03bcPKT . If the amount is less than 1 \u03bcPKT , the amount is displayed as nano-pkt or nPKT and multiplied by 1,000,000,000 , so 107 atomic units is displayed as 99.64 nPKT . A single atomic unit is displayed as 0.93 nPKT . While these are the convensions adopted by all GUI wallets and explorers. Exchanges and merchants may choose to forbid transaction of amounts less than 1 PKT , thus they need only implement #1 because they will never display an amount of less than 1 PKT . Fees \u00b6 PKT uses bitcoin-like computation for determining fees. Because the blockchain has a 1 minute block time, there is generally plenty of space for transactions in the blocks and the typical fee is the minimum: 1 atomic unit per byte of transaction size. The size of a transaction depends on the number of transaction inputs and outputs. The number of outputs is simply the number of addresses you are paying, plus one more to re-route change back to yourself. The number of inputs depends on where the coins you are sending have been sourced from. If you are mining PKT, then you may have many tiny transactions which you need to aggregate in order to make a payment. Currently, wallets do not create transactions with more than 1,460 inputs. This results in a transaction of just under 100,000 bytes and thus costing right around 100,000 atomic units or 93.13 \u03bcPKT , that is micro-pkt or millionths of a PKT (for the largest possible transaction). A more typical transaction size would be around 1,000 bytes and thus cost 1,000 atomic units, or 931.32 nPKT (billionths of 1 PKT). In almost every case, the fees will disappear when the transaction is rounded to display the 2 decimal places. It is possible, though vanishingly unlikely that your wallet could display 10.00 PKT and after sending exactly 5 PKT your wallet displays 4.99 . This would happen if the actual amount you had was 9.555555556 PKT , rounded to 10.00 and after sending exactly 5 PKT , the miniscule fee caused it to cross a rounding boundary and become 4.555555553 . If you wish to perform analytical accounting, it is recommended that you deal exclusively in atomic units, represented as an int64, and only represent PKT for display purposes.","title":"PKT Units and Fees"},{"location":"units/#pkt-units-and-fees","text":"As with all blockchains, every transaction of PKT is exact, however unlike other blockchains, the number of atomic units in the PKT coin is not a power of 10. With Bitcoin there are 100,000,000 atomic units (\"satoshis\") per bitcoin. With PKT there are 2 to the 30th power ( 1,073,741,824 ) atomic units. While this is strange number in base-10, in binary it is a perfectly even 1 followed by thirty zeros. The binary nature of PKT has a few caveats, for example it means sending 0.01 PKT is actually impossible. This is because 0.01 would corrispond to 10,737,418.24 atomic units. Since they are atomic (indivisible), this must be rounded to the nearest whole number: 10,737,418 . When this divided by 2 30 , it results in 0.009999999776482582 . Therefore, all GUI wallets and explorers adopt the following convension: PKT amounts are always expressed with two decimal places and rounded to nearest, so 1,084,479,242 atomic units is displayed as 1.01 PKT . If the amount is less than 1 PKT , the amount is displayed as milli-pkt or mPKT and multiplied by 1,000 , so 10,737,418 atomic units is displayed as 10.00 mPKT If the amount is less than 1 mPKT , the amount is displayed as micro-pkt or \u03bcPKT and multiplied by 1,000,000 , so 107,374 atomic units is displayed as 100.00 \u03bcPKT . If the amount is less than 1 \u03bcPKT , the amount is displayed as nano-pkt or nPKT and multiplied by 1,000,000,000 , so 107 atomic units is displayed as 99.64 nPKT . A single atomic unit is displayed as 0.93 nPKT . While these are the convensions adopted by all GUI wallets and explorers. Exchanges and merchants may choose to forbid transaction of amounts less than 1 PKT , thus they need only implement #1 because they will never display an amount of less than 1 PKT .","title":"PKT Units and Fees"},{"location":"units/#fees","text":"PKT uses bitcoin-like computation for determining fees. Because the blockchain has a 1 minute block time, there is generally plenty of space for transactions in the blocks and the typical fee is the minimum: 1 atomic unit per byte of transaction size. The size of a transaction depends on the number of transaction inputs and outputs. The number of outputs is simply the number of addresses you are paying, plus one more to re-route change back to yourself. The number of inputs depends on where the coins you are sending have been sourced from. If you are mining PKT, then you may have many tiny transactions which you need to aggregate in order to make a payment. Currently, wallets do not create transactions with more than 1,460 inputs. This results in a transaction of just under 100,000 bytes and thus costing right around 100,000 atomic units or 93.13 \u03bcPKT , that is micro-pkt or millionths of a PKT (for the largest possible transaction). A more typical transaction size would be around 1,000 bytes and thus cost 1,000 atomic units, or 931.32 nPKT (billionths of 1 PKT). In almost every case, the fees will disappear when the transaction is rounded to display the 2 decimal places. It is possible, though vanishingly unlikely that your wallet could display 10.00 PKT and after sending exactly 5 PKT your wallet displays 4.99 . This would happen if the actual amount you had was 9.555555556 PKT , rounded to 10.00 and after sending exactly 5 PKT , the miniscule fee caused it to cross a rounding boundary and become 4.555555553 . If you wish to perform analytical accounting, it is recommended that you deal exclusively in atomic units, represented as an int64, and only represent PKT for display purposes.","title":"Fees"},{"location":"useful_tools/","text":"PKT Useful Tools \u00b6 This is a mostly un-moderated list of FREE tools, websites and software built by the PKT Cash community. Beware, anyone can contribute their own links and pkt.cash does not verify them. Add yourself \u00b6 Make a Pull Request to This page to add your link. Keep it short and to the point NO PICTURES, no color text, no big fonts No commercial products or services (these can be added here ) Chain Analysis \u00b6 Pkt.world Explorer \u00b6 The Pkt.world blockchain explorer gives insights into the blockchain, active mining pools and their performance, and your mining profits. PktPool.io \u00b6 Analytics dashboard covering many aspects of the PKT blockchain including a block explorer, transaction graphs, mining rewards, WPKT transactions and much more. Packetscan.io \u00b6 Packetscan is a block explorer for the PKT Cash blockchain. Look up transactions, blocks, addresess, balances, chain stats and more. Mining Yield and Performance Calculators \u00b6 MinePKT.com \u00b6 Ke/s calculator to see your profits! Mining Profitability Calculator \u00b6 Estimate performance and potential PKT Cash announcement miner earnings for a huge selection of CPUs. Mining Tools \u00b6 Minr \u00b6 A simple to use GUI for PacketCrypt. Available on MacOS, Windows and Linux. Configuration Generator \u00b6 Quickly generate and download a PacketCrypt config.json file. Miscellaneous \u00b6 Decimation Tracker \u00b6 When will the next PKT Cash decimation be? Never miss another decimation with the PKT Watch Decimation Tracker. PKT Tips \u00b6 Mining tips and tricks for memebers who are new to the PKT project.","title":"PKT Useful Tools"},{"location":"useful_tools/#pkt-useful-tools","text":"This is a mostly un-moderated list of FREE tools, websites and software built by the PKT Cash community. Beware, anyone can contribute their own links and pkt.cash does not verify them.","title":"PKT Useful Tools"},{"location":"useful_tools/#add-yourself","text":"Make a Pull Request to This page to add your link. Keep it short and to the point NO PICTURES, no color text, no big fonts No commercial products or services (these can be added here )","title":"Add yourself"},{"location":"useful_tools/#chain-analysis","text":"","title":"Chain Analysis"},{"location":"useful_tools/#pktworld-explorer","text":"The Pkt.world blockchain explorer gives insights into the blockchain, active mining pools and their performance, and your mining profits.","title":"Pkt.world Explorer"},{"location":"useful_tools/#pktpoolio","text":"Analytics dashboard covering many aspects of the PKT blockchain including a block explorer, transaction graphs, mining rewards, WPKT transactions and much more.","title":"PktPool.io"},{"location":"useful_tools/#packetscanio","text":"Packetscan is a block explorer for the PKT Cash blockchain. Look up transactions, blocks, addresess, balances, chain stats and more.","title":"Packetscan.io"},{"location":"useful_tools/#mining-yield-and-performance-calculators","text":"","title":"Mining Yield and Performance Calculators"},{"location":"useful_tools/#minepktcom","text":"Ke/s calculator to see your profits!","title":"MinePKT.com"},{"location":"useful_tools/#mining-profitability-calculator","text":"Estimate performance and potential PKT Cash announcement miner earnings for a huge selection of CPUs.","title":"Mining Profitability Calculator"},{"location":"useful_tools/#mining-tools","text":"","title":"Mining Tools"},{"location":"useful_tools/#minr","text":"A simple to use GUI for PacketCrypt. Available on MacOS, Windows and Linux.","title":"Minr"},{"location":"useful_tools/#configuration-generator","text":"Quickly generate and download a PacketCrypt config.json file.","title":"Configuration Generator"},{"location":"useful_tools/#miscellaneous","text":"","title":"Miscellaneous"},{"location":"useful_tools/#decimation-tracker","text":"When will the next PKT Cash decimation be? Never miss another decimation with the PKT Watch Decimation Tracker.","title":"Decimation Tracker"},{"location":"useful_tools/#pkt-tips","text":"Mining tips and tricks for memebers who are new to the PKT project.","title":"PKT Tips"},{"location":"vote/","text":"Casting a Vote \u00b6 To cast a vote, you need to install PKT-Lightning-Wallet on your computer. git clone https://github.com/cjdelisle/PKT-Lightning-Wallet cd PKT-Lightning-Wallet ./do Then you can create a new wallet to test the voting system: ./bin/pld --create --wallet=voting_test_jan24_2024 Once you have created it, start pld using: ./bin/pld --wallet=voting_test After it is running, open another window, navigate to the same folder, and make a new address: ./bin/pldctl wallet/address/create Once you have the new address, send yourself a few PKT in order to vote with it. You can check your balance using: ./bin/pldctl wallet/address/balances Before you can vote, you will first need to unlock the wallet: ./bin/pldctl unlock And after you have unlocked the wallet using the password you configured earlier, you can finally cast your vote: ./bin/pldctl wallet/transaction/sendvote \\ --from_address= \\ \u2014-vote_for=pkt1q2yt8djdlykf2d9ukmw0q5z5tur05xm674tq6y8 If all goes well, you should see a transaction ID as the result, and within a few minutes you will be able to look up that transaction on any of the block explorers. A few words of caution: If you use the CLI pktwallet, PKT-Lightning-Wallet will open your same wallet.db file and it responds the same way to the --wallet flag. PKT-Lightning-Wallet is still in development do not use it to open a large wallet yet!","title":"Casting a Vote"},{"location":"vote/#casting-a-vote","text":"To cast a vote, you need to install PKT-Lightning-Wallet on your computer. git clone https://github.com/cjdelisle/PKT-Lightning-Wallet cd PKT-Lightning-Wallet ./do Then you can create a new wallet to test the voting system: ./bin/pld --create --wallet=voting_test_jan24_2024 Once you have created it, start pld using: ./bin/pld --wallet=voting_test After it is running, open another window, navigate to the same folder, and make a new address: ./bin/pldctl wallet/address/create Once you have the new address, send yourself a few PKT in order to vote with it. You can check your balance using: ./bin/pldctl wallet/address/balances Before you can vote, you will first need to unlock the wallet: ./bin/pldctl unlock And after you have unlocked the wallet using the password you configured earlier, you can finally cast your vote: ./bin/pldctl wallet/transaction/sendvote \\ --from_address= \\ \u2014-vote_for=pkt1q2yt8djdlykf2d9ukmw0q5z5tur05xm674tq6y8 If all goes well, you should see a transaction ID as the result, and within a few minutes you will be able to look up that transaction on any of the block explorers. A few words of caution: If you use the CLI pktwallet, PKT-Lightning-Wallet will open your same wallet.db file and it responds the same way to the --wallet flag. PKT-Lightning-Wallet is still in development do not use it to open a large wallet yet!","title":"Casting a Vote"},{"location":"wrapped_pkt/","text":"Steps to swap PKT to wPKT \u00b6 Buy PKT on Bittrex Global (Non-USA traders) or BitMart (Global traders) Create a metamask wallet and connect to the Binance Smart Chain Goto www.ODApp.io Connect your metamask wallet Please note there is a %0.075 fee associated with swapping Pre-commit your wallet by entering the PKT sender address. This is the address that you will be sending your PKT from. (Please note: This address must be from a PKT wallet (Electrum, Zulu or PKT World. Once you commit this address it is the only address you can use to convert PKT to wPKT and wPKT to PKT. After you submit you should see Pair Successfully Committed. Click Get WPKT Using the PKT wallet address you used in step 5, Send the amount of PKT you want to wrap to wPKT to ODApp's \"VAULT\" address, pkt1qex9d4fjwc0nqr3x0hex6ds5vpu67efjdlm6ckz Make sure to copy the Transaction ID as you will need this in the coming steps For security, you will need to wait about 7 minutes to claim your WPKT. For transactions greater than 7 million PKT could take up to 3 hours to complete. Enter your PKT transaction ID, the address you sent your PKT from, and the BSC address you would like your WPKT sent to. You will need to hold some BNB coin in your metamask wallet to pay for fees in this process. If successful the following notification will populate and you will then have the ability to add wPKT token to your wallet. This will prompt your metamask wallet to open and allow you to add your tokens. Go check your wPKT wallet and make sure your coins were deposited. You can always copy your PKT transaction hash into etherscan.io and you should see the transaction on the blockchain. Steps to swap wPKT to PKT \u00b6 You should already have either purchased wPKT on PancakeSwap or swapped your PKT into wPKT Please note there is a %.075 fee associated with swapping Log into your metmask wallet You must have some BNB in your wallet as you will need this for fees associated with swapping. Open your PKT wallet Goto www.ODApp.io and connect your metamask wallet Enter the amount of wPKT you want to convert to PKT Enter the PKT wallet address you would like the PKT deposited into The following prompt should show if you successfully burned the coins Press Recover PKT and this prompt should show Go check your PKT wallet and make sure your coins were deposited. You can always copy your PKT transaction hash into https://explorer.pkt.cash and you should see the transaction on the blockchain.","title":"Wrapped pkt"},{"location":"wrapped_pkt/#steps-to-swap-pkt-to-wpkt","text":"Buy PKT on Bittrex Global (Non-USA traders) or BitMart (Global traders) Create a metamask wallet and connect to the Binance Smart Chain Goto www.ODApp.io Connect your metamask wallet Please note there is a %0.075 fee associated with swapping Pre-commit your wallet by entering the PKT sender address. This is the address that you will be sending your PKT from. (Please note: This address must be from a PKT wallet (Electrum, Zulu or PKT World. Once you commit this address it is the only address you can use to convert PKT to wPKT and wPKT to PKT. After you submit you should see Pair Successfully Committed. Click Get WPKT Using the PKT wallet address you used in step 5, Send the amount of PKT you want to wrap to wPKT to ODApp's \"VAULT\" address, pkt1qex9d4fjwc0nqr3x0hex6ds5vpu67efjdlm6ckz Make sure to copy the Transaction ID as you will need this in the coming steps For security, you will need to wait about 7 minutes to claim your WPKT. For transactions greater than 7 million PKT could take up to 3 hours to complete. Enter your PKT transaction ID, the address you sent your PKT from, and the BSC address you would like your WPKT sent to. You will need to hold some BNB coin in your metamask wallet to pay for fees in this process. If successful the following notification will populate and you will then have the ability to add wPKT token to your wallet. This will prompt your metamask wallet to open and allow you to add your tokens. Go check your wPKT wallet and make sure your coins were deposited. You can always copy your PKT transaction hash into etherscan.io and you should see the transaction on the blockchain.","title":"Steps to swap PKT to wPKT"},{"location":"wrapped_pkt/#steps-to-swap-wpkt-to-pkt","text":"You should already have either purchased wPKT on PancakeSwap or swapped your PKT into wPKT Please note there is a %.075 fee associated with swapping Log into your metmask wallet You must have some BNB in your wallet as you will need this for fees associated with swapping. Open your PKT wallet Goto www.ODApp.io and connect your metamask wallet Enter the amount of wPKT you want to convert to PKT Enter the PKT wallet address you would like the PKT deposited into The following prompt should show if you successfully burned the coins Press Recover PKT and this prompt should show Go check your PKT wallet and make sure your coins were deposited. You can always copy your PKT transaction hash into https://explorer.pkt.cash and you should see the transaction on the blockchain.","title":"Steps to swap wPKT to PKT"},{"location":"adv_learning/buy-pkt/","text":"PKT Documentation \u00b6 Documentation for the PKT project Wallet setup \u00b6 There are several wallets which you can choose from, the easiest to set up are PKT Electrum which has a Graphical UI and supports Windows, Mac and Linux. PKT Wallet which has a Graphical UI and supports MacOS and works great with miners. Pkt.world Wallet which has a Graphical UI for Windows, works with miners and includes a built-in miner. You can also setup PKT Wallet which is command line only but has greater scalability and privacy features. Mining \u00b6 PKT is mined using the PacketCrypt bandwidth hard mining algorithm. You can learn how to mine on the Mining page. Running a pktd instance \u00b6 You can setup a pktd instance using the instructions on pktd . Help and Community \u00b6 To get help with the technologies in the PKT project or to hang out in the community join us on the PKT Chat project chat.","title":"PKT Documentation"},{"location":"adv_learning/buy-pkt/#pkt-documentation","text":"Documentation for the PKT project","title":"PKT Documentation"},{"location":"adv_learning/buy-pkt/#wallet-setup","text":"There are several wallets which you can choose from, the easiest to set up are PKT Electrum which has a Graphical UI and supports Windows, Mac and Linux. PKT Wallet which has a Graphical UI and supports MacOS and works great with miners. Pkt.world Wallet which has a Graphical UI for Windows, works with miners and includes a built-in miner. You can also setup PKT Wallet which is command line only but has greater scalability and privacy features.","title":"Wallet setup"},{"location":"adv_learning/buy-pkt/#mining","text":"PKT is mined using the PacketCrypt bandwidth hard mining algorithm. You can learn how to mine on the Mining page.","title":"Mining"},{"location":"adv_learning/buy-pkt/#running-a-pktd-instance","text":"You can setup a pktd instance using the instructions on pktd .","title":"Running a pktd instance"},{"location":"adv_learning/buy-pkt/#help-and-community","text":"To get help with the technologies in the PKT project or to hang out in the community join us on the PKT Chat project chat.","title":"Help and Community"},{"location":"adv_learning/cryptoeconomics/","text":"Cryptoeconomics \u00b6 PKT blockchain is based on the Bitcoin codebase and implements two fundamental changes: Replacing SHA256 with the PacketCrypt proof of work. Adding a Network Steward that receives 20% of every coinbase payout to provide grants that meets its funding criteria. There are a total of 6 billion PKT, which will be mined over 63 years. Instead of an abrupt halving event every 4 years, like with Bitcoin, PKT uses a steady decay called a decimation, which is a 10% reduction in the block rewards every 100 days. Payout of PKT vs. BTC as percent of total coins Payout of PKT vs. BTC as percent of total coins PKT is designed around fast cheap transacting in small denominations. This is why there will be a total of 6 billion PKT mined compared to 21 million for Bitcoin. Furthermore, each PKT is subdividable into 1,073,741,824 units (2 to the 30th power) whereas there are only 100 million satoshis per Bitcoin. When the Bitcoin price reached almost $62,000 in October 2021, the price of a satoshi was 0.06 cents. This cost per satoshi is impractical for microtransactions, even with nearly free transacting over the Lightning Network. PKT Cash provides an economic incentive for people to connect bandwidth to the PKT Network. The Network Steward is designed to ensure funding is available to build-out an expansive, decentralized internet infrastructure with open-source technology.","title":"Cryptoeconomics"},{"location":"adv_learning/cryptoeconomics/#cryptoeconomics","text":"PKT blockchain is based on the Bitcoin codebase and implements two fundamental changes: Replacing SHA256 with the PacketCrypt proof of work. Adding a Network Steward that receives 20% of every coinbase payout to provide grants that meets its funding criteria. There are a total of 6 billion PKT, which will be mined over 63 years. Instead of an abrupt halving event every 4 years, like with Bitcoin, PKT uses a steady decay called a decimation, which is a 10% reduction in the block rewards every 100 days. Payout of PKT vs. BTC as percent of total coins Payout of PKT vs. BTC as percent of total coins PKT is designed around fast cheap transacting in small denominations. This is why there will be a total of 6 billion PKT mined compared to 21 million for Bitcoin. Furthermore, each PKT is subdividable into 1,073,741,824 units (2 to the 30th power) whereas there are only 100 million satoshis per Bitcoin. When the Bitcoin price reached almost $62,000 in October 2021, the price of a satoshi was 0.06 cents. This cost per satoshi is impractical for microtransactions, even with nearly free transacting over the Lightning Network. PKT Cash provides an economic incentive for people to connect bandwidth to the PKT Network. The Network Steward is designed to ensure funding is available to build-out an expansive, decentralized internet infrastructure with open-source technology.","title":"Cryptoeconomics"},{"location":"adv_learning/pktd-full-node/","text":"How to Run a Pktd Full Node \u00b6 Pktd is the PKT full node blockchain software. It is a fork of btcd, the golang bitcoin instance. Running a full node \u00b6 If you want to run a full node in the PKT network, you can do so by downloading pktd and compiling it on a Linux or Mac server. Follow the process in Installation and the simply type ./bin/pktd and it will start up and begin syncing the chain and helping verify the PKT network. NOTE : Running a full node requires over 40 GB of disk space to store the blockchain and is not necessary for participating in the project. If you just want to make a wallet, see PKT Electrum (gui) or PKTWallet (command line) wallets. Installation \u00b6 Install golang \u00b6 First, you need to install the go programming language, go to the golang website and learn how to install it on your system: https://golang.org/doc/install Install git \u00b6 Next you will need to make sure you have git installed. The first thing to do is check whether you have it installed already: git version If it prints something like git version 2.21.1 you\u2019re in luck and you can continue. If it prints something more like command not found: git then you\u2019ll need to install it. Installation will depend on your system, for debian/ubuntu like systems you will want sudo apt install git and for OSX with homebrew, you\u2019ll want brew install git . Install the components \u00b6 Once you have golang and git fully installed and set up, you can use the following commands to install pktd, pktwallet and pktctl. git clone https://github.com/pkt-cash/pktd cd pktd ./do If you see something like: Everything looks good at the end of typing ./do then you should be ready to start using pktd.","title":"How to Run a Pktd Full Node"},{"location":"adv_learning/pktd-full-node/#how-to-run-a-pktd-full-node","text":"Pktd is the PKT full node blockchain software. It is a fork of btcd, the golang bitcoin instance.","title":"How to Run a Pktd Full Node"},{"location":"adv_learning/pktd-full-node/#running-a-full-node","text":"If you want to run a full node in the PKT network, you can do so by downloading pktd and compiling it on a Linux or Mac server. Follow the process in Installation and the simply type ./bin/pktd and it will start up and begin syncing the chain and helping verify the PKT network. NOTE : Running a full node requires over 40 GB of disk space to store the blockchain and is not necessary for participating in the project. If you just want to make a wallet, see PKT Electrum (gui) or PKTWallet (command line) wallets.","title":"Running a full node"},{"location":"adv_learning/pktd-full-node/#installation","text":"","title":"Installation"},{"location":"adv_learning/pktd-full-node/#install-golang","text":"First, you need to install the go programming language, go to the golang website and learn how to install it on your system: https://golang.org/doc/install","title":"Install golang"},{"location":"adv_learning/pktd-full-node/#install-git","text":"Next you will need to make sure you have git installed. The first thing to do is check whether you have it installed already: git version If it prints something like git version 2.21.1 you\u2019re in luck and you can continue. If it prints something more like command not found: git then you\u2019ll need to install it. Installation will depend on your system, for debian/ubuntu like systems you will want sudo apt install git and for OSX with homebrew, you\u2019ll want brew install git .","title":"Install git"},{"location":"adv_learning/pktd-full-node/#install-the-components","text":"Once you have golang and git fully installed and set up, you can use the following commands to install pktd, pktwallet and pktctl. git clone https://github.com/pkt-cash/pktd cd pktd ./do If you see something like: Everything looks good at the end of typing ./do then you should be ready to start using pktd.","title":"Install the components"},{"location":"adv_learning/sell-pkt/","text":"PKT Documentation \u00b6 Documentation for the PKT project Wallet setup \u00b6 There are several wallets which you can choose from, the easiest to set up are PKT Electrum which has a Graphical UI and supports Windows, Mac and Linux. PKT Wallet which has a Graphical UI and supports MacOS and works great with miners. Pkt.world Wallet which has a Graphical UI for Windows, works with miners and includes a built-in miner. You can also setup PKT Wallet which is command line only but has greater scalability and privacy features. Mining \u00b6 PKT is mined using the PacketCrypt bandwidth hard mining algorithm. You can learn how to mine on the Mining page. Running a pktd instance \u00b6 You can setup a pktd instance using the instructions on pktd . Help and Community \u00b6 To get help with the technologies in the PKT project or to hang out in the community join us on the PKT Chat project chat.","title":"PKT Documentation"},{"location":"adv_learning/sell-pkt/#pkt-documentation","text":"Documentation for the PKT project","title":"PKT Documentation"},{"location":"adv_learning/sell-pkt/#wallet-setup","text":"There are several wallets which you can choose from, the easiest to set up are PKT Electrum which has a Graphical UI and supports Windows, Mac and Linux. PKT Wallet which has a Graphical UI and supports MacOS and works great with miners. Pkt.world Wallet which has a Graphical UI for Windows, works with miners and includes a built-in miner. You can also setup PKT Wallet which is command line only but has greater scalability and privacy features.","title":"Wallet setup"},{"location":"adv_learning/sell-pkt/#mining","text":"PKT is mined using the PacketCrypt bandwidth hard mining algorithm. You can learn how to mine on the Mining page.","title":"Mining"},{"location":"adv_learning/sell-pkt/#running-a-pktd-instance","text":"You can setup a pktd instance using the instructions on pktd .","title":"Running a pktd instance"},{"location":"adv_learning/sell-pkt/#help-and-community","text":"To get help with the technologies in the PKT project or to hang out in the community join us on the PKT Chat project chat.","title":"Help and Community"},{"location":"adv_learning/swap-pkt-wrapped-pkt/","text":"How to Swap PKT and Wrapped PKT \u00b6 Steps to swap PKT to wPKT \u00b6 Buy PKT on Bittrex Global (Non-USA traders) or BitMart (Global traders) Create a metamask wallet and connect to the Binance Smart Chain Goto www.ODApp.io Connect your metamask wallet Please note there is a %0.075 fee associated with swapping Pre-commit your wallet by entering the PKT sender address. This is the address that you will be sending your PKT from. (Please note: This address must be from a PKT wallet (Electrum, Zulu or PKT World. Once you commit this address it is the only address you can use to convert PKT to wPKT and wPKT to PKT. After you submit you should see Pair Successfully Committed. Click Get WPKT Using the PKT wallet address you used in step 5, Send the amount of PKT you want to wrap to wPKT to ODApp's \"VAULT\" address, pkt1qex9d4fjwc0nqr3x0hex6ds5vpu67efjdlm6ckz Make sure to copy the Transaction ID as you will need this in the coming steps For security, you will need to wait about 7 minutes to claim your WPKT. For transactions greater than 7 million PKT could take up to 3 hours to complete. Enter your PKT transaction ID, the address you sent your PKT from, and the BSC address you would like your WPKT sent to. You will need to hold some BNB coin in your metamask wallet to pay for fees in this process. If successful the following notification will populate and you will then have the ability to add wPKT token to your wallet. This will prompt your metamask wallet to open and allow you to add your tokens. Go check your wPKT wallet and make sure your coins were deposited. You can always copy your PKT transaction hash into etherscan.io and you should see the transaction on the blockchain. Steps to swap wPKT to PKT \u00b6 You should already have either purchased wPKT on PancakeSwap or swapped your PKT into wPKT Please note there is a %.075 fee associated with swapping Log into your metmask wallet You must have some BNB in your wallet as you will need this for fees associated with swapping. Open your PKT wallet Go to www.ODApp.io and connect your metamask wallet Enter the amount of wPKT you want to convert to PKT Enter the PKT wallet address you would like the PKT deposited into The following prompt should show if you successfully burned the coins Press Recover PKT and this prompt should show Go check your PKT wallet and make sure your coins were deposited. You can always copy your PKT transaction hash into https://explorer.pkt.cash and you should see the transaction on the blockchain.","title":"How to Swap PKT and Wrapped PKT"},{"location":"adv_learning/swap-pkt-wrapped-pkt/#how-to-swap-pkt-and-wrapped-pkt","text":"","title":"How to Swap PKT and Wrapped PKT"},{"location":"adv_learning/swap-pkt-wrapped-pkt/#steps-to-swap-pkt-to-wpkt","text":"Buy PKT on Bittrex Global (Non-USA traders) or BitMart (Global traders) Create a metamask wallet and connect to the Binance Smart Chain Goto www.ODApp.io Connect your metamask wallet Please note there is a %0.075 fee associated with swapping Pre-commit your wallet by entering the PKT sender address. This is the address that you will be sending your PKT from. (Please note: This address must be from a PKT wallet (Electrum, Zulu or PKT World. Once you commit this address it is the only address you can use to convert PKT to wPKT and wPKT to PKT. After you submit you should see Pair Successfully Committed. Click Get WPKT Using the PKT wallet address you used in step 5, Send the amount of PKT you want to wrap to wPKT to ODApp's \"VAULT\" address, pkt1qex9d4fjwc0nqr3x0hex6ds5vpu67efjdlm6ckz Make sure to copy the Transaction ID as you will need this in the coming steps For security, you will need to wait about 7 minutes to claim your WPKT. For transactions greater than 7 million PKT could take up to 3 hours to complete. Enter your PKT transaction ID, the address you sent your PKT from, and the BSC address you would like your WPKT sent to. You will need to hold some BNB coin in your metamask wallet to pay for fees in this process. If successful the following notification will populate and you will then have the ability to add wPKT token to your wallet. This will prompt your metamask wallet to open and allow you to add your tokens. Go check your wPKT wallet and make sure your coins were deposited. You can always copy your PKT transaction hash into etherscan.io and you should see the transaction on the blockchain.","title":"Steps to swap PKT to wPKT"},{"location":"adv_learning/swap-pkt-wrapped-pkt/#steps-to-swap-wpkt-to-pkt","text":"You should already have either purchased wPKT on PancakeSwap or swapped your PKT into wPKT Please note there is a %.075 fee associated with swapping Log into your metmask wallet You must have some BNB in your wallet as you will need this for fees associated with swapping. Open your PKT wallet Go to www.ODApp.io and connect your metamask wallet Enter the amount of wPKT you want to convert to PKT Enter the PKT wallet address you would like the PKT deposited into The following prompt should show if you successfully burned the coins Press Recover PKT and this prompt should show Go check your PKT wallet and make sure your coins were deposited. You can always copy your PKT transaction hash into https://explorer.pkt.cash and you should see the transaction on the blockchain.","title":"Steps to swap wPKT to PKT"},{"location":"community/classifieds/","text":"Classifieds \u00b6 PKT is composed of the community members and community member companies that operate within the ecosystem. This collective comes from around the world and are rallying around the vision and roadmap towards getting the next one billion people connected online. Below is a mostly un-moderated list of classified advertisements and offerings. Beware that anyone can contribute and offer their services and there is no central authority at pkt.cash to verify them. Add yourself \u00b6 Make a Pull Request to This page to add your offer. Keep it short and to the point NO PICTURES, no color text, no big fonts Use the appropriate category Hardware \u00b6 Pktpal.com \u00b6 Buy a PKT Cube which will mine PKT with your unused internet and provides easy-to-use PkteerOS wallet. Hosting \u00b6 Space-hosting.net \u00b6 Mining servers for rent PKT Cloud Mining Service \u00b6 AMAPOOL.com \u00b6 Your best choice towards a fully automated PKT cloud mining solution.","title":"Classifieds"},{"location":"community/classifieds/#classifieds","text":"PKT is composed of the community members and community member companies that operate within the ecosystem. This collective comes from around the world and are rallying around the vision and roadmap towards getting the next one billion people connected online. Below is a mostly un-moderated list of classified advertisements and offerings. Beware that anyone can contribute and offer their services and there is no central authority at pkt.cash to verify them.","title":"Classifieds"},{"location":"community/classifieds/#add-yourself","text":"Make a Pull Request to This page to add your offer. Keep it short and to the point NO PICTURES, no color text, no big fonts Use the appropriate category","title":"Add yourself"},{"location":"community/classifieds/#hardware","text":"","title":"Hardware"},{"location":"community/classifieds/#pktpalcom","text":"Buy a PKT Cube which will mine PKT with your unused internet and provides easy-to-use PkteerOS wallet.","title":"Pktpal.com"},{"location":"community/classifieds/#hosting","text":"","title":"Hosting"},{"location":"community/classifieds/#space-hostingnet","text":"Mining servers for rent","title":"Space-hosting.net"},{"location":"community/classifieds/#pkt-cloud-mining-service","text":"","title":"PKT Cloud Mining Service"},{"location":"community/classifieds/#amapoolcom","text":"Your best choice towards a fully automated PKT cloud mining solution.","title":"AMAPOOL.com"},{"location":"community/code_of_conduct/","text":"PKT Code of Conduct: \u00b6 1) We are here to talk about PKT. If it's not PKT related don't post it here. 2) Not reading the rules is not an excuse for breaking the rules. 3) No OTC trading allowed outside of designated areas. 4) This is a place to build the community and create a positive dialogue amongst Pkteers. If the conversation turns negative, the moderators reserves the right to ban or block anyone. A person will not be banned for a single offense, but only if the behavior continues after being warned by a moderator. 5) Hate speech is not permitted and can result in being banned. This mean no sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory jokes and language. We ask that Pkteers keep the conversation civil and respectful. 6) No violence, threats of violence or violent language directed against another person. No name calling, attacks, or bad mouthing others. 7) No posting or displaying sexually explicit or violent material. 8) No personal insults, particularly those related to gender, sexual orientation, race, religion, or disability 9) No unwelcome sexual attention. This includes, sexualized comments or jokes, and unwelcomed sexual advances. 10) No self-promotion whether direct or indirect unless with written admin approval. No shilling (promoting) of assets is permitted. 12) Moderators reserve the right to moderate, block or remove posts that are factually inaccurate, deemed inappopriate or lack substantiation. 13) Spamming will result in being banned. 14) No trolling - No antagonizing people or the any of the PKT chats by deliberately posting inflammatory, irrelevant, or offensive comments, images, memes, stickers or other disruptive content. If it doesn't relate to PKT don't post it or you will be banned. Contact people \u00b6 If someone has made you feel unsafe or unwelcome, please contact one of the admins of the group. We will do our best to address your matter quickly and with discretion. Jeremy Berger: email: jeremy@pktpal.com / telegram: @jeremy_berger / pkt.chat: @jeremyb Caleb James DeLisle: email: cjd@cjdns.fr / pkt.chat: @cjd","title":"Code of Conduct"},{"location":"community/code_of_conduct/#pkt-code-of-conduct","text":"1) We are here to talk about PKT. If it's not PKT related don't post it here. 2) Not reading the rules is not an excuse for breaking the rules. 3) No OTC trading allowed outside of designated areas. 4) This is a place to build the community and create a positive dialogue amongst Pkteers. If the conversation turns negative, the moderators reserves the right to ban or block anyone. A person will not be banned for a single offense, but only if the behavior continues after being warned by a moderator. 5) Hate speech is not permitted and can result in being banned. This mean no sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory jokes and language. We ask that Pkteers keep the conversation civil and respectful. 6) No violence, threats of violence or violent language directed against another person. No name calling, attacks, or bad mouthing others. 7) No posting or displaying sexually explicit or violent material. 8) No personal insults, particularly those related to gender, sexual orientation, race, religion, or disability 9) No unwelcome sexual attention. This includes, sexualized comments or jokes, and unwelcomed sexual advances. 10) No self-promotion whether direct or indirect unless with written admin approval. No shilling (promoting) of assets is permitted. 12) Moderators reserve the right to moderate, block or remove posts that are factually inaccurate, deemed inappopriate or lack substantiation. 13) Spamming will result in being banned. 14) No trolling - No antagonizing people or the any of the PKT chats by deliberately posting inflammatory, irrelevant, or offensive comments, images, memes, stickers or other disruptive content. If it doesn't relate to PKT don't post it or you will be banned.","title":"PKT Code of Conduct:"},{"location":"community/code_of_conduct/#contact-people","text":"If someone has made you feel unsafe or unwelcome, please contact one of the admins of the group. We will do our best to address your matter quickly and with discretion. Jeremy Berger: email: jeremy@pktpal.com / telegram: @jeremy_berger / pkt.chat: @jeremyb Caleb James DeLisle: email: cjd@cjdns.fr / pkt.chat: @cjd","title":"Contact people"},{"location":"community/ethica-communication-guidelines/","text":"Ethical Communication Guidelines \u00b6 This is a guideline for ethical communications about the project. It is recognized that to accomplish the goals, it is imperative that there is a community who understands and uses the technology, so communication cannot be avoided. However, poor communication, even made with the best intentions, risks harming the reputation of the project and the general public. So these guidelines exist to help community members represent the project in the best way possible. A Far Higher Standard \u00b6 Within the cryptocurrency ecosystem, there are a significant number of outright criminal activities. Beyond those there is a wide grey area of communication activities which have not been subject to any regulatory enforcement, but still fall far outside of what these guidelines establish as ethical. Community members are cautioned that due to the scale of these \"grey\" activities, there is a large body of publications, influencers, marketers, \"shills\" and other professionals who, if consulted or emulated, are highly likely to put a person in ethical peril, because these guidelines establish a far higher standard of communication ethics than that which is generally considered to be legal. Principle of No Expected Return \u00b6 It is acknowledged that buying, selling and mining are central aspects of cryptocurrency use, so it is difficult to effectively communicate about the project without ever addressing reasons why a person might do these things. Therefore these guidelines offer a pre-approved narrative which is considered to be maximally protective of the reputation of the project while also providing a healthy perspective regarding the risks associated with cryptocurrency. The Principle of No Expected Return is that one should buy or mine a cryptocurrency if and only if they believe strongly enough in the vision of the project that they would be proud to own the coin even if they were never able to sell it. In the early days of Bitcoin, it was widely believed that it would be legislated out of existence or otherwise collapse, and so this principle was pervasive throughout the community. Many people chose to hold Bitcoin as a political statement regarding the morality of modern financial institutions, especially after the 2008 financial crisis. The key components of the Principle of No Expected Return are: * A clear understanding of what the technology is and what it is not. * A belief in the social change which that technology can realistically facilitate. * The mental and financial preparedness to lose any money or effort that is used to acquire the coin, as one has when one makes a donation. When you\u2019re considering buying a coin, you need to ask yourself: If you were to lose everything you put into a coin, would you look back on the day you bought it, proud to have been a part of the project at that time? If the answer is no, then you\u2019re either planning to buy too much, or you\u2019re just not ready. Guidelines \u00b6 Dishonest, intentionally misleading, or otherwise unlawful communication is obviously unethical, but beyond that there is no clear definition for unethical communication, though one could characterise it in the words of Justice Stewart, \"I know it when I see it\". These non-exhaustive guidelines exist to give community members an understanding of the types of communication which are most likely to be unethical. They are listed in order of importance with the most important first. Communications which follow the letter, but not the spirit, of these guidelines are unethical. One example of this is token disclaimers such as \"this is not financial advice\". Disclaimers can be useful for helping a person understand the limitations and caveats of a communication, but a token disclaimer exists more to make the communicator seem innocent than to help the audience have a clearer understanding. The use of fine print, or disclaimers which \"feel out of place\" in the overall communication should be regarded as red flags, and communicators using these should review the objectives of their message and whether it is being communicated clearly. Communications which a person of sound judgement could plausibly interpret as presenting a low risk low effort opportunity to make money , or \u201csomething for nothing\u201d, are unethical. Presenting an opportunity can take many forms including implication though specific selection of facts, or an over-celebratory tone. Generally speaking, communications should be explicit about their objective so that there is minimal chance of mis-interpretation. Communications which a person suffering impaired judgement has an unusually high likelihood of interpreting as a low risk low effort opportunity to make money are unethical. Topics like \u201cwinning\u201d, \u201cpump\u201d, \u201cFOMO\u201d, \u201cYOLO\u201d (spend all of your money), \u201cmoon\u201d, and the idea of being rich, may strike the average person as nothing more than a bit of low-culture humour, but for a pathological gambler these can trigger a harmful thought process and should be avoided. Communications related to investment and trading of the coin should be addressed to investors and traders \u2014 professionals who know how hard it is to reliably beat the market and who make decisions based on their own unique portfolio and risk management strategy. Any kind of communication around these topics which has a celebratory tone, or which could reasonably be interpreted as investment advice is not ethical. Communications which focus entirely on explaining a piece of technology, without any mention or implication of buying, selling, price, or potential future growth (including growth in usage of the technology), are probably ethical. Communications which address the topic of buying, selling or mining, but are specifically focused on the Principle of No Expected Return, are probably ethical. Examples to Avoid \u00b6 These passages are examples of the type of communication which is likely to be problematic. Context is key, and in the context of a communication which clearly transmits an ethical core message, a passing mention of money probably does not make the whole communication unethical. But if the core message is not communicated with adequate clarity, then even the slightest mention of topics like the following may make the communication unethical. \"price has grown by 50% over the past 3 months\" \"George has made $700 mining with his old computer\" \"reaping the rewards for something you put zero effort in!\"\" \"build a fund for rainy days\" \"earning passive income at any time of day, even when sleeping\" \"early adopters have the most to gain\" \"miners who accumulate the coin are rewarded whenever there is significant price appreciation\" \"so many people trust cryptocurrency investment\" \"gain financially by facilitating connectivity\" While some of these statements may be factual, they share a common narrative that there is an opportunity, it is easy, and it leads to making money. This is a stark contrast from the Principle of No Expected Return. Better Examples \u00b6 Honest communications addressing topics like the following are more likely to be ethical. \"price has been on the rise, but this can be affected by current events outside the project, so core community members are more focused on continuous progress toward the goal\" \"'I pay for my internet, so I might as well use it\"', said George who has been mining with his old computer\" \"we all know internet is over-priced, but now there is a community of people trying to do something about it\" \"'I know cryptocurrencies are risky, and tomorrow it could all be worth nothing, but I'm spending money I can afford on a something I believe in' said Tom, who recently bought coins\" \"the control that big telecoms have over our everyday lives can make people feel powerless, but now there\u2019s an easy way to push back\" \"sometimes the price goes up and sometimes it goes down. Being part of the community is about believing that democratised internet is possible\"","title":"Ethical Communication Guidelines"},{"location":"community/ethica-communication-guidelines/#ethical-communication-guidelines","text":"This is a guideline for ethical communications about the project. It is recognized that to accomplish the goals, it is imperative that there is a community who understands and uses the technology, so communication cannot be avoided. However, poor communication, even made with the best intentions, risks harming the reputation of the project and the general public. So these guidelines exist to help community members represent the project in the best way possible.","title":"Ethical Communication Guidelines"},{"location":"community/ethica-communication-guidelines/#a-far-higher-standard","text":"Within the cryptocurrency ecosystem, there are a significant number of outright criminal activities. Beyond those there is a wide grey area of communication activities which have not been subject to any regulatory enforcement, but still fall far outside of what these guidelines establish as ethical. Community members are cautioned that due to the scale of these \"grey\" activities, there is a large body of publications, influencers, marketers, \"shills\" and other professionals who, if consulted or emulated, are highly likely to put a person in ethical peril, because these guidelines establish a far higher standard of communication ethics than that which is generally considered to be legal.","title":"A Far Higher Standard"},{"location":"community/ethica-communication-guidelines/#principle-of-no-expected-return","text":"It is acknowledged that buying, selling and mining are central aspects of cryptocurrency use, so it is difficult to effectively communicate about the project without ever addressing reasons why a person might do these things. Therefore these guidelines offer a pre-approved narrative which is considered to be maximally protective of the reputation of the project while also providing a healthy perspective regarding the risks associated with cryptocurrency. The Principle of No Expected Return is that one should buy or mine a cryptocurrency if and only if they believe strongly enough in the vision of the project that they would be proud to own the coin even if they were never able to sell it. In the early days of Bitcoin, it was widely believed that it would be legislated out of existence or otherwise collapse, and so this principle was pervasive throughout the community. Many people chose to hold Bitcoin as a political statement regarding the morality of modern financial institutions, especially after the 2008 financial crisis. The key components of the Principle of No Expected Return are: * A clear understanding of what the technology is and what it is not. * A belief in the social change which that technology can realistically facilitate. * The mental and financial preparedness to lose any money or effort that is used to acquire the coin, as one has when one makes a donation. When you\u2019re considering buying a coin, you need to ask yourself: If you were to lose everything you put into a coin, would you look back on the day you bought it, proud to have been a part of the project at that time? If the answer is no, then you\u2019re either planning to buy too much, or you\u2019re just not ready.","title":"Principle of No Expected Return"},{"location":"community/ethica-communication-guidelines/#guidelines","text":"Dishonest, intentionally misleading, or otherwise unlawful communication is obviously unethical, but beyond that there is no clear definition for unethical communication, though one could characterise it in the words of Justice Stewart, \"I know it when I see it\". These non-exhaustive guidelines exist to give community members an understanding of the types of communication which are most likely to be unethical. They are listed in order of importance with the most important first. Communications which follow the letter, but not the spirit, of these guidelines are unethical. One example of this is token disclaimers such as \"this is not financial advice\". Disclaimers can be useful for helping a person understand the limitations and caveats of a communication, but a token disclaimer exists more to make the communicator seem innocent than to help the audience have a clearer understanding. The use of fine print, or disclaimers which \"feel out of place\" in the overall communication should be regarded as red flags, and communicators using these should review the objectives of their message and whether it is being communicated clearly. Communications which a person of sound judgement could plausibly interpret as presenting a low risk low effort opportunity to make money , or \u201csomething for nothing\u201d, are unethical. Presenting an opportunity can take many forms including implication though specific selection of facts, or an over-celebratory tone. Generally speaking, communications should be explicit about their objective so that there is minimal chance of mis-interpretation. Communications which a person suffering impaired judgement has an unusually high likelihood of interpreting as a low risk low effort opportunity to make money are unethical. Topics like \u201cwinning\u201d, \u201cpump\u201d, \u201cFOMO\u201d, \u201cYOLO\u201d (spend all of your money), \u201cmoon\u201d, and the idea of being rich, may strike the average person as nothing more than a bit of low-culture humour, but for a pathological gambler these can trigger a harmful thought process and should be avoided. Communications related to investment and trading of the coin should be addressed to investors and traders \u2014 professionals who know how hard it is to reliably beat the market and who make decisions based on their own unique portfolio and risk management strategy. Any kind of communication around these topics which has a celebratory tone, or which could reasonably be interpreted as investment advice is not ethical. Communications which focus entirely on explaining a piece of technology, without any mention or implication of buying, selling, price, or potential future growth (including growth in usage of the technology), are probably ethical. Communications which address the topic of buying, selling or mining, but are specifically focused on the Principle of No Expected Return, are probably ethical.","title":"Guidelines"},{"location":"community/ethica-communication-guidelines/#examples-to-avoid","text":"These passages are examples of the type of communication which is likely to be problematic. Context is key, and in the context of a communication which clearly transmits an ethical core message, a passing mention of money probably does not make the whole communication unethical. But if the core message is not communicated with adequate clarity, then even the slightest mention of topics like the following may make the communication unethical. \"price has grown by 50% over the past 3 months\" \"George has made $700 mining with his old computer\" \"reaping the rewards for something you put zero effort in!\"\" \"build a fund for rainy days\" \"earning passive income at any time of day, even when sleeping\" \"early adopters have the most to gain\" \"miners who accumulate the coin are rewarded whenever there is significant price appreciation\" \"so many people trust cryptocurrency investment\" \"gain financially by facilitating connectivity\" While some of these statements may be factual, they share a common narrative that there is an opportunity, it is easy, and it leads to making money. This is a stark contrast from the Principle of No Expected Return.","title":"Examples to Avoid"},{"location":"community/ethica-communication-guidelines/#better-examples","text":"Honest communications addressing topics like the following are more likely to be ethical. \"price has been on the rise, but this can be affected by current events outside the project, so core community members are more focused on continuous progress toward the goal\" \"'I pay for my internet, so I might as well use it\"', said George who has been mining with his old computer\" \"we all know internet is over-priced, but now there is a community of people trying to do something about it\" \"'I know cryptocurrencies are risky, and tomorrow it could all be worth nothing, but I'm spending money I can afford on a something I believe in' said Tom, who recently bought coins\" \"the control that big telecoms have over our everyday lives can make people feel powerless, but now there\u2019s an easy way to push back\" \"sometimes the price goes up and sometimes it goes down. Being part of the community is about believing that democratised internet is possible\"","title":"Better Examples"},{"location":"community/press-media-assets/","text":"Press & Media Assets \u00b6 Brand Assets \u00b6 Download the PKT Logo and wordmark assets here . Before use, please see the trademark guidelines for these assets here .","title":"Press & Media Assets"},{"location":"community/press-media-assets/#press-media-assets","text":"","title":"Press & Media Assets"},{"location":"community/press-media-assets/#brand-assets","text":"Download the PKT Logo and wordmark assets here . Before use, please see the trademark guidelines for these assets here .","title":"Brand Assets"},{"location":"dev/building-on-pkt/","text":"Building on PKT \u00b6 The PKT roadmap is composed of 4 Phases, based on having the fewest dependencies first. Collectively the 3 Phase will bring the PKT Network to scale. Phase 1: Launch \u00b6 Bandwidth Mining PacketCrypt was created and the mainnet PKT blockchain was launched in August 2019. Phase 1 focused on community growth, building out network infrastructure and unifying around PacketCrypt and bandwidth-hard mining. Major developments include multiple PKT wallets, community engagement via PKT Chat, the project task tracker, Network Steward and informational websites. Phase 2: Utilize \u00b6 Tokenized Bandwidth Leases Anyone who wants to use a VPN, create their own, or mine PKT will easily be able to do so via Anodium VPN. Technology development includes Token Strike, to issue tokens in the PKT ecosystem for near zero cost and without gas fees, a DeFi bridge between PKT, Ethereum and Binance Smart Chain, bandwidth lease function and infrastructure via cjdns, and an Edge Point Device to easily mine PacketCrypt and get on the internet via your neighbor. Phase 3: Scale \u00b6 Support Internet Sharing The alpha implementation of the virtual Cloud ISP provides the ability to trade, aggregate, and access tokenized bandwidth leases via cjdns. People can get on the internet via their neighbor with no privacy risk because all data is sent to a VPN. The Atomic Swap Market can transact in and out of PKT with high speed, low cost transactions between Lightning Network enabled coins such as PKT, Bitcoin, Litecoin and Ethereum. Desktop and mobile apps provide easy functionality across devices worldwide. Phase 4: Innovate \u00b6 Virtual ISPs The commercial expansion of Cloud ISPs signifies a healthy and active bandwidth market. People can lease bandwidth allotment guarantees and access the internet without using a traditional ISP. PKT Priority provides internet access with a minimum price free if there is available bandwidth. This will simplify local mesh networking by moving the network engineering component to the Cloud ISP. The stateless switch design central in the cjdns protocol will not only set new records for router performance/cost ratio, but will also allow for hundreds or even thousands of Cloud ISPs to send data through a single device, each according to their own routing policy.","title":"Building on PKT"},{"location":"dev/building-on-pkt/#building-on-pkt","text":"The PKT roadmap is composed of 4 Phases, based on having the fewest dependencies first. Collectively the 3 Phase will bring the PKT Network to scale.","title":"Building on PKT"},{"location":"dev/building-on-pkt/#phase-1-launch","text":"Bandwidth Mining PacketCrypt was created and the mainnet PKT blockchain was launched in August 2019. Phase 1 focused on community growth, building out network infrastructure and unifying around PacketCrypt and bandwidth-hard mining. Major developments include multiple PKT wallets, community engagement via PKT Chat, the project task tracker, Network Steward and informational websites.","title":"Phase 1: Launch"},{"location":"dev/building-on-pkt/#phase-2-utilize","text":"Tokenized Bandwidth Leases Anyone who wants to use a VPN, create their own, or mine PKT will easily be able to do so via Anodium VPN. Technology development includes Token Strike, to issue tokens in the PKT ecosystem for near zero cost and without gas fees, a DeFi bridge between PKT, Ethereum and Binance Smart Chain, bandwidth lease function and infrastructure via cjdns, and an Edge Point Device to easily mine PacketCrypt and get on the internet via your neighbor.","title":"Phase 2: Utilize"},{"location":"dev/building-on-pkt/#phase-3-scale","text":"Support Internet Sharing The alpha implementation of the virtual Cloud ISP provides the ability to trade, aggregate, and access tokenized bandwidth leases via cjdns. People can get on the internet via their neighbor with no privacy risk because all data is sent to a VPN. The Atomic Swap Market can transact in and out of PKT with high speed, low cost transactions between Lightning Network enabled coins such as PKT, Bitcoin, Litecoin and Ethereum. Desktop and mobile apps provide easy functionality across devices worldwide.","title":"Phase 3: Scale"},{"location":"dev/building-on-pkt/#phase-4-innovate","text":"Virtual ISPs The commercial expansion of Cloud ISPs signifies a healthy and active bandwidth market. People can lease bandwidth allotment guarantees and access the internet without using a traditional ISP. PKT Priority provides internet access with a minimum price free if there is available bandwidth. This will simplify local mesh networking by moving the network engineering component to the Cloud ISP. The stateless switch design central in the cjdns protocol will not only set new records for router performance/cost ratio, but will also allow for hundreds or even thousands of Cloud ISPs to send data through a single device, each according to their own routing policy.","title":"Phase 4: Innovate"},{"location":"dev/cjdns/","text":"Cjdns \u00b6 PKT is an ideological continuation of the cjdns mesh networking project, launched by PKT Lead Developer Caleb James DeLisle in 2011. Cjdns solves several weaknesses with internet function, such as data privacy, need for decentralization and optimized, efficient routing. Cjdns provides anyone with an IPv6 address, which is the basis for a global mesh network in which anyone can share their internet and become an internet service provider.","title":"Cjdns"},{"location":"dev/cjdns/#cjdns","text":"PKT is an ideological continuation of the cjdns mesh networking project, launched by PKT Lead Developer Caleb James DeLisle in 2011. Cjdns solves several weaknesses with internet function, such as data privacy, need for decentralization and optimized, efficient routing. Cjdns provides anyone with an IPv6 address, which is the basis for a global mesh network in which anyone can share their internet and become an internet service provider.","title":"Cjdns"},{"location":"dev/cloud-isp/","text":"Cloud ISP \u00b6 A Cloud ISP is a hybrid between a traditional ISP and a VPN provider. This technology is designed to reimagine internet service, so anyone can become an ISP. Cloud ISPs aggregate and broker Edge Point tokenized bandwidth leases, facilitate software defined networking, and oversee the administrative roles of internet service to customers. The Cloud ISP system is designed to manage two virtual assets: the virtual router lease and the bandwidth lease. A virtual router lease has a right to resources within the routing device for a limited time period. The bandwidth lease provides a minimum bandwidth link guarantee between two physical routing devices for a specific time period. The result is the PKT Network: an ultra fast independent network that is connected to the normal internet and powered by the people.","title":"Cloud ISP"},{"location":"dev/cloud-isp/#cloud-isp","text":"A Cloud ISP is a hybrid between a traditional ISP and a VPN provider. This technology is designed to reimagine internet service, so anyone can become an ISP. Cloud ISPs aggregate and broker Edge Point tokenized bandwidth leases, facilitate software defined networking, and oversee the administrative roles of internet service to customers. The Cloud ISP system is designed to manage two virtual assets: the virtual router lease and the bandwidth lease. A virtual router lease has a right to resources within the routing device for a limited time period. The bandwidth lease provides a minimum bandwidth link guarantee between two physical routing devices for a specific time period. The result is the PKT Network: an ultra fast independent network that is connected to the normal internet and powered by the people.","title":"Cloud ISP"},{"location":"dev/edge-points/","text":"Edge Point \u00b6 Edge Points are devices that are operated by an individual or business and maintain a network connection to the PKT Network. Edge Points will tokenize their bandwidth using TokenStrike and sell tokenized bandwidth to Cloud ISPs to broker connectivity to real customers. Edge Point technology will interface with PKT VPN and evolve to facilitate mesh network access points to the internet.","title":"Edge Point"},{"location":"dev/edge-points/#edge-point","text":"Edge Points are devices that are operated by an individual or business and maintain a network connection to the PKT Network. Edge Points will tokenize their bandwidth using TokenStrike and sell tokenized bandwidth to Cloud ISPs to broker connectivity to real customers. Edge Point technology will interface with PKT VPN and evolve to facilitate mesh network access points to the internet.","title":"Edge Point"},{"location":"dev/packetcrypt/","text":"PacketCrypt \u00b6 PacketCrypt is the world\u2019s first bandwidth-hard proof of work. Packet = Bandwidth and Crypt = Encryption. This technology incentivizes miners to increase bandwidth upload & download throughput. PKT mining favors increased bandwidth over CPU power, rewarding people that connect high speed bandwidth infrastructure to the PKT Network.","title":"PacketCrypt"},{"location":"dev/packetcrypt/#packetcrypt","text":"PacketCrypt is the world\u2019s first bandwidth-hard proof of work. Packet = Bandwidth and Crypt = Encryption. This technology incentivizes miners to increase bandwidth upload & download throughput. PKT mining favors increased bandwidth over CPU power, rewarding people that connect high speed bandwidth infrastructure to the PKT Network.","title":"PacketCrypt"},{"location":"dev/pkt-lightning-deamon/","text":"PKT Lighting \u00b6","title":"PKT Lighting"},{"location":"dev/pkt-lightning-deamon/#pkt-lighting","text":"","title":"PKT Lighting"},{"location":"dev/pkt-vpn/","text":"PKT VPN \u00b6 The PKT VPN is built to connect to, send and receive traffic through the cjdns network. PKT VPN enables users to get a base-line VPN for free, and pay for speed using microtransactions with PKT Cash. VPN server administrators will register as a public PKT VPN, accept client connections and route VPN traffic through the PKT network. Users can browse a list of VPNs, select the best VPN based on location and bandwidth load and surf the internet from behind a PKT VPN exit node. VPN creates utility for the PKT Network and offers financial incentive in addition to PKT Cash mining.","title":"PKT VPN"},{"location":"dev/pkt-vpn/#pkt-vpn","text":"The PKT VPN is built to connect to, send and receive traffic through the cjdns network. PKT VPN enables users to get a base-line VPN for free, and pay for speed using microtransactions with PKT Cash. VPN server administrators will register as a public PKT VPN, accept client connections and route VPN traffic through the PKT network. Users can browse a list of VPNs, select the best VPN based on location and bandwidth load and surf the internet from behind a PKT VPN exit node. VPN creates utility for the PKT Network and offers financial incentive in addition to PKT Cash mining.","title":"PKT VPN"},{"location":"dev/tokenstrike/","text":"TokenStrike \u00b6 TokenStrike is a unique protocol for the issuance and exchange of tokens and NFTs inside of the PKT ecosystem. TokenStrike is designed for micro-transactions, so tokens must be issued and exchanged with zero cost and without gas fees (gas fees for the exchange of ERC-20 tokens is unacceptable). TokenStrike tokens can be exchanged in a fully untrusted Lightning Network HTLC transaction. This is a scalable solution that fosters unlimited marketplace potential, including a decentralized bandwidth market, and sets PKT apart from every other layer 1 blockchain in the world. Edge Points will tokenize their bandwidth using TokenStrike and sell tokenized bandwidth to Cloud ISPs to broker connectivity to real customers. This collectively will interface with PKT VPN and evolve to facilitate software defined networking and content delivery across the internet.","title":"TokenStrike"},{"location":"dev/tokenstrike/#tokenstrike","text":"TokenStrike is a unique protocol for the issuance and exchange of tokens and NFTs inside of the PKT ecosystem. TokenStrike is designed for micro-transactions, so tokens must be issued and exchanged with zero cost and without gas fees (gas fees for the exchange of ERC-20 tokens is unacceptable). TokenStrike tokens can be exchanged in a fully untrusted Lightning Network HTLC transaction. This is a scalable solution that fosters unlimited marketplace potential, including a decentralized bandwidth market, and sets PKT apart from every other layer 1 blockchain in the world. Edge Points will tokenize their bandwidth using TokenStrike and sell tokenized bandwidth to Cloud ISPs to broker connectivity to real customers. This collectively will interface with PKT VPN and evolve to facilitate software defined networking and content delivery across the internet.","title":"TokenStrike"},{"location":"dev/wiif-sharing/","text":"PKT Documentation \u00b6 Documentation for the PKT project Wallet setup \u00b6 There are several wallets which you can choose from, the easiest to set up are PKT Electrum which has a Graphical UI and supports Windows, Mac and Linux. PKT Wallet which has a Graphical UI and supports MacOS and works great with miners. Pkt.world Wallet which has a Graphical UI for Windows, works with miners and includes a built-in miner. You can also setup PKT Wallet which is command line only but has greater scalability and privacy features. Mining \u00b6 PKT is mined using the PacketCrypt bandwidth hard mining algorithm. You can learn how to mine on the Mining page. Running a pktd instance \u00b6 You can setup a pktd instance using the instructions on pktd . Help and Community \u00b6 To get help with the technologies in the PKT project or to hang out in the community join us on the PKT Chat project chat.","title":"PKT Documentation"},{"location":"dev/wiif-sharing/#pkt-documentation","text":"Documentation for the PKT project","title":"PKT Documentation"},{"location":"dev/wiif-sharing/#wallet-setup","text":"There are several wallets which you can choose from, the easiest to set up are PKT Electrum which has a Graphical UI and supports Windows, Mac and Linux. PKT Wallet which has a Graphical UI and supports MacOS and works great with miners. Pkt.world Wallet which has a Graphical UI for Windows, works with miners and includes a built-in miner. You can also setup PKT Wallet which is command line only but has greater scalability and privacy features.","title":"Wallet setup"},{"location":"dev/wiif-sharing/#mining","text":"PKT is mined using the PacketCrypt bandwidth hard mining algorithm. You can learn how to mine on the Mining page.","title":"Mining"},{"location":"dev/wiif-sharing/#running-a-pktd-instance","text":"You can setup a pktd instance using the instructions on pktd .","title":"Running a pktd instance"},{"location":"dev/wiif-sharing/#help-and-community","text":"To get help with the technologies in the PKT project or to hang out in the community join us on the PKT Chat project chat.","title":"Help and Community"},{"location":"electrum/","text":"PKT electrum \u00b6 Important Electrum is a good lightweight wallet for making and receiving payments, but it lacks scalability and is not appropriate for mining , if you are interested in mining PKT, see pktwallet . First setup \u00b6 MacOS \u00b6 Download the file ending with .dmg from the latest PKT Electrum Releases Open Finder Double-click on your Downloads folder and find and click on electrum-pkt-4.0.2.dmg A new window will open with the PKT Electrum app, click and drag it into your Applications folder Press Command+Space to open your Spotlight Search and type PKT Electrum, when you see the PKT Electrum app, press the Enter key to open it. The first time PKT Electrum is opened, you will get a popup asking you if you want to open it, click open Continue with Setting up your wallet below Windows \u00b6 Download the file ending with .exe from the latest PKT Electrum Releases You will see a popup window telling you the application is not signed by a Microsoft Authorized Developer, always be sure you download PKT Electrum from the original website, do not run any app given to you in a chat, file-sharing or email attachment. Click \"More info\" to show additional options. Click the \"Run anyway\" button to launch PKT Electrum, you won't see this message again. Follow the steps in the setup process. Go to your desktop and you should see a new icon labeled PKT Electrum , click on it. Continue with Setting up your wallet below. Linux \u00b6 Download the file ending with .AppImage from the latest PKT Electrum Releases Click on the downloaded file and PKT Electrum should start up right away. Setting up your wallet \u00b6 Before you can begin using PKT, you need to setup your wallet, this means writing down your secret key and setting passwords so your PKT will stay safe. First you will be asked if you want to configure the server to connect to, unless you are an advanced user, just click \"next\" Next select your wallet, you give your wallet a name if you wish, or leave it as default_wallet , then click \"next\". You will be prompted to select which type of wallet you are creating, unless you are doing something fancy, you'll want to just click \"next\" Next you will have the option to create a wallet using a secret key from different sources, for the purposes of this tutorial just click next. Next you will be asked if you want to create a \"legacy\" style wallet, this is not needed so just click \"next\" Now PKT Electrum is going to create a seed , it takes the form of 12 words and from it your entire wallet is created If you have these 12 special words, you can recover your PKT even if your computer is lost or damaged If someone else gets access to these 12 words, they can steal all of your PKT It is recommended that you write this on paper and keep in a safe place. After you have written your seed, you will be asked to type it back in, the fast way to do this is by copy/paste to a text pad Now you'll be asked to write it back in, you can copy it from the text pad Make sure you really stored your seed on paper, we do not recommend storing it on any electronic device . Now you will need to pick a passphrase for your wallet This passphrase encrypts your wallet, protecting your PKT even if your computer is stolen Unlike your seed, the passphrase is useless without the wallet file We recommend using https://www.useapassphrase.com/ to pick a strong passphrase for you You can store your passphrase on your phone to have easy access Congratulations, you now have a PKT wallet! It will require about 5 minutes to synchronize with the PKT blockchain, but you can still use it while this is happening. Receiving PKT \u00b6 To receive coins, you need to create a new PKT address Click the \"Receive\" tab Type a description for the purpose of receiving the coins, this will appear in the notification when you get paid Set the expiration, if this is not an invoice , you can choose \"never\" After you click \"Request\", your wallet will create a new address and copy it to your clipboard so you can send it to the person paying you (or transfer money to your new wallet) When PKT gets sent to your new address, you will get a notification. It says \"unconfirmed\" because the transaction has not yet been included in the history of the blockchain. Once your transaction has been included in the blockchain, this icon will change to a clock and then after a few minutes, a checkmark Congratulations, you have received your first PKT Sending PKT \u00b6 To pay PKT to someone else, click on the Send tab and paste the address to be paid Type a description of the payment, this is just for you, it will not be sent to the person you are paying Enter the amount to be paid Click Pay You will be prompted to enter your wallet passphrase in order to decrypt the wallet for one brief moment to send the PKT Every transaction requires a fee for inclusion in the blockchain, this is a very small cost: 132 nPKT is one hundred and thirty two nano-PKT (that means billionths , i.e. 0.000000132 PKT) After you enter your passphrase and click \"send\", you will see a transaction ID , this set of numbers and letters uniquely identifies your transaction and can be used to view it in the block explorer. Just like when receiving, your transaction will appear first as \"unconfirmed\" and then later it will switch to a clock when it has been included in the blockchain. After waiting a few minutes, you will see a clock and then later a checkmark indicating your transaction has been included in the blockchain When people consider a transaction to be \"complete\" depends on the merchant, but in general it should be considered to be ok once it switches from \"unconfirmed\" to the clock icon. Congratulations, you've sent PKT! About Units \u00b6 Each PKT is made up of 1000 milli-PKT, denoted mPKT Each milli-PKT is sub-divided into 1000 micro-PKT, denoted uPKT Each micro-PKT is sub-divided into 1000 nano-PKT, denoted nPKT Advanced usage \u00b6 Recover from seed \u00b6 You can recover a PKT Electrum wallet from the seed you were given when you set it up. To do this follow the same instructions as for any other Electrum wallet: https://bitcoinelectrum.com/restoring-your-standard-wallet-from-seed/ Note that recovery from seed will not work to import addresses from other wallets such as a Gridnode. Multi-signature \u00b6 Setting up multi-signature in PKT Electrum is the same as with Bitcoin Electrum so you can follow this tutorial: https://electrum.readthedocs.io/en/latest/multisig.html How it works \u00b6 PKT Electrum is significantly similar to Bitcoin Electrum. It contacts one of a pool of community operated electrumx servers. Instead of syncing the entire chain it requests information about its addresses from the electrumx server and only downloads enough of the blockchain to verify that the electrumx server is not trying to trick it. In practice this means the wallet needs to check the proof of work and sync the block headers but not the rest of the blocks. Since PKT uses PacketCrypt proof of work, the work verification needs to be different. PacketCrypt headers are fairly large, between 4KB and 16KB, even at only 4KB each they make up 2.1GB of data per year. To maintain security without downloading an unacceptably large amount of data, PKT Electrum downloads only a small number of PacketCrypt proofs near the tip of the chain. If the wallet only downloaded (say) the most recent 100 PacketCrypt proofs, an attacking electrumx server would know exactly how many blocks it needed to mine in order to create a convincing fake chain, PKT Electrum makes this more difficult by using statistical verification. Statistical Verification \u00b6 PKT Electrum makes the job of an attacker hard by asking for an unpredictable random set of PacketCrypt proofs, the chance of any give block being verified is based on the distance between the tip of the chain and that block. The chance is defined as MIN(100%, K / distance_from_tip) where K is a constant which we set at 20 to make PKT Electrum verify around 200 blocks total. With K = 20 , the first 20 blocks have a 100% chance of being verified. * block 21 has a 95% chance * block 25 has an 80% chance * block 50 has a 40% chance * block 80 has a 25% chance The distribution of likelyhood of verifying a block is shown by this chart: Running an ElectrumX server \u00b6 If you would like to participate in running your own ElectrumX server to help the PKT Electrum network, you can do so using a simple Docker command. Check out the Docker PKT Electrumx project for more information about how to run an instance.","title":"PKT electrum"},{"location":"electrum/#pkt-electrum","text":"Important Electrum is a good lightweight wallet for making and receiving payments, but it lacks scalability and is not appropriate for mining , if you are interested in mining PKT, see pktwallet .","title":"PKT electrum"},{"location":"electrum/#first-setup","text":"","title":"First setup"},{"location":"electrum/#macos","text":"Download the file ending with .dmg from the latest PKT Electrum Releases Open Finder Double-click on your Downloads folder and find and click on electrum-pkt-4.0.2.dmg A new window will open with the PKT Electrum app, click and drag it into your Applications folder Press Command+Space to open your Spotlight Search and type PKT Electrum, when you see the PKT Electrum app, press the Enter key to open it. The first time PKT Electrum is opened, you will get a popup asking you if you want to open it, click open Continue with Setting up your wallet below","title":"MacOS"},{"location":"electrum/#windows","text":"Download the file ending with .exe from the latest PKT Electrum Releases You will see a popup window telling you the application is not signed by a Microsoft Authorized Developer, always be sure you download PKT Electrum from the original website, do not run any app given to you in a chat, file-sharing or email attachment. Click \"More info\" to show additional options. Click the \"Run anyway\" button to launch PKT Electrum, you won't see this message again. Follow the steps in the setup process. Go to your desktop and you should see a new icon labeled PKT Electrum , click on it. Continue with Setting up your wallet below.","title":"Windows"},{"location":"electrum/#linux","text":"Download the file ending with .AppImage from the latest PKT Electrum Releases Click on the downloaded file and PKT Electrum should start up right away.","title":"Linux"},{"location":"electrum/#setting-up-your-wallet","text":"Before you can begin using PKT, you need to setup your wallet, this means writing down your secret key and setting passwords so your PKT will stay safe. First you will be asked if you want to configure the server to connect to, unless you are an advanced user, just click \"next\" Next select your wallet, you give your wallet a name if you wish, or leave it as default_wallet , then click \"next\". You will be prompted to select which type of wallet you are creating, unless you are doing something fancy, you'll want to just click \"next\" Next you will have the option to create a wallet using a secret key from different sources, for the purposes of this tutorial just click next. Next you will be asked if you want to create a \"legacy\" style wallet, this is not needed so just click \"next\" Now PKT Electrum is going to create a seed , it takes the form of 12 words and from it your entire wallet is created If you have these 12 special words, you can recover your PKT even if your computer is lost or damaged If someone else gets access to these 12 words, they can steal all of your PKT It is recommended that you write this on paper and keep in a safe place. After you have written your seed, you will be asked to type it back in, the fast way to do this is by copy/paste to a text pad Now you'll be asked to write it back in, you can copy it from the text pad Make sure you really stored your seed on paper, we do not recommend storing it on any electronic device . Now you will need to pick a passphrase for your wallet This passphrase encrypts your wallet, protecting your PKT even if your computer is stolen Unlike your seed, the passphrase is useless without the wallet file We recommend using https://www.useapassphrase.com/ to pick a strong passphrase for you You can store your passphrase on your phone to have easy access Congratulations, you now have a PKT wallet! It will require about 5 minutes to synchronize with the PKT blockchain, but you can still use it while this is happening.","title":"Setting up your wallet"},{"location":"electrum/#receiving-pkt","text":"To receive coins, you need to create a new PKT address Click the \"Receive\" tab Type a description for the purpose of receiving the coins, this will appear in the notification when you get paid Set the expiration, if this is not an invoice , you can choose \"never\" After you click \"Request\", your wallet will create a new address and copy it to your clipboard so you can send it to the person paying you (or transfer money to your new wallet) When PKT gets sent to your new address, you will get a notification. It says \"unconfirmed\" because the transaction has not yet been included in the history of the blockchain. Once your transaction has been included in the blockchain, this icon will change to a clock and then after a few minutes, a checkmark Congratulations, you have received your first PKT","title":"Receiving PKT"},{"location":"electrum/#sending-pkt","text":"To pay PKT to someone else, click on the Send tab and paste the address to be paid Type a description of the payment, this is just for you, it will not be sent to the person you are paying Enter the amount to be paid Click Pay You will be prompted to enter your wallet passphrase in order to decrypt the wallet for one brief moment to send the PKT Every transaction requires a fee for inclusion in the blockchain, this is a very small cost: 132 nPKT is one hundred and thirty two nano-PKT (that means billionths , i.e. 0.000000132 PKT) After you enter your passphrase and click \"send\", you will see a transaction ID , this set of numbers and letters uniquely identifies your transaction and can be used to view it in the block explorer. Just like when receiving, your transaction will appear first as \"unconfirmed\" and then later it will switch to a clock when it has been included in the blockchain. After waiting a few minutes, you will see a clock and then later a checkmark indicating your transaction has been included in the blockchain When people consider a transaction to be \"complete\" depends on the merchant, but in general it should be considered to be ok once it switches from \"unconfirmed\" to the clock icon. Congratulations, you've sent PKT!","title":"Sending PKT"},{"location":"electrum/#about-units","text":"Each PKT is made up of 1000 milli-PKT, denoted mPKT Each milli-PKT is sub-divided into 1000 micro-PKT, denoted uPKT Each micro-PKT is sub-divided into 1000 nano-PKT, denoted nPKT","title":"About Units"},{"location":"electrum/#advanced-usage","text":"","title":"Advanced usage"},{"location":"electrum/#recover-from-seed","text":"You can recover a PKT Electrum wallet from the seed you were given when you set it up. To do this follow the same instructions as for any other Electrum wallet: https://bitcoinelectrum.com/restoring-your-standard-wallet-from-seed/ Note that recovery from seed will not work to import addresses from other wallets such as a Gridnode.","title":"Recover from seed"},{"location":"electrum/#multi-signature","text":"Setting up multi-signature in PKT Electrum is the same as with Bitcoin Electrum so you can follow this tutorial: https://electrum.readthedocs.io/en/latest/multisig.html","title":"Multi-signature"},{"location":"electrum/#how-it-works","text":"PKT Electrum is significantly similar to Bitcoin Electrum. It contacts one of a pool of community operated electrumx servers. Instead of syncing the entire chain it requests information about its addresses from the electrumx server and only downloads enough of the blockchain to verify that the electrumx server is not trying to trick it. In practice this means the wallet needs to check the proof of work and sync the block headers but not the rest of the blocks. Since PKT uses PacketCrypt proof of work, the work verification needs to be different. PacketCrypt headers are fairly large, between 4KB and 16KB, even at only 4KB each they make up 2.1GB of data per year. To maintain security without downloading an unacceptably large amount of data, PKT Electrum downloads only a small number of PacketCrypt proofs near the tip of the chain. If the wallet only downloaded (say) the most recent 100 PacketCrypt proofs, an attacking electrumx server would know exactly how many blocks it needed to mine in order to create a convincing fake chain, PKT Electrum makes this more difficult by using statistical verification.","title":"How it works"},{"location":"electrum/#statistical-verification","text":"PKT Electrum makes the job of an attacker hard by asking for an unpredictable random set of PacketCrypt proofs, the chance of any give block being verified is based on the distance between the tip of the chain and that block. The chance is defined as MIN(100%, K / distance_from_tip) where K is a constant which we set at 20 to make PKT Electrum verify around 200 blocks total. With K = 20 , the first 20 blocks have a 100% chance of being verified. * block 21 has a 95% chance * block 25 has an 80% chance * block 50 has a 40% chance * block 80 has a 25% chance The distribution of likelyhood of verifying a block is shown by this chart:","title":"Statistical Verification"},{"location":"electrum/#running-an-electrumx-server","text":"If you would like to participate in running your own ElectrumX server to help the PKT Electrum network, you can do so using a simple Docker command. Check out the Docker PKT Electrumx project for more information about how to run an instance.","title":"Running an ElectrumX server"},{"location":"learn/network-steward/","text":"What is the Network Steward? \u00b6 Introducing the Network Steward \u00b6 The Network Steward is a mechanism built into the PKT blockchain to ensure there is continuous funding to build out the project roadmap. Since PKT is completely decentralized, with no central company, foundation or investors behind the project, the Network Steward is able to provide perpetual funding for development. As part of the consensus rules of the PKT blockchain, the publicly visible Network Steward wallet address receives 20% of every newly mined block. 100% of the funds are mandated to be paid out in the form of grants towards funding the Network Steward\u2019s areas of interest, including open-source technology development of the PKT Network. Unlike a pre-mine or founder's fee, the recipient of the Network Steward payout can be changed by a PoS vote. All coins that are not allocated within 129,600 blocks (~3 months) are automatically burned. More than 13% of the mined coins have been burned through 2022. You can check out the status of the burned coins and PoS vote to re-elect the Network Steward page on the block explorer page [here]. https://explorer.pkt.cash/address pkt1q6hqsqhqdgqfd8t3xwgceulu7k9d9w5t2amath0qxyfjlvl3s3u4sjza2g2 Who is the Network Steward? \u00b6 This Network Steward address is a multi-signature group that requires 3 out of 5 signatures in order to make a payment. The current Network Stewards* are: Cjd \u2014 cjdns original author Arceliar \u2014 Yggdrasil original author Benhylau \u2014 Contributor at Toronto Mesh NeilAlexander \u2014 Yggdrasil release manager Backupbrain \u2014 Creator of NetNinja VPN device All of the participants have agreed not to enter into any relationships which would affect their ability to act impartially on behalf of the PKT project. How does the Network Steward Operate? \u00b6 The persons in custody of the Network Steward wallet periodically meet to award grants in accordance with a strict criteria and mandate. The current mandate is that funds are to be used for: Financing the development of open source software, technology documentation and education resources for the PKT Network and community. Lobbying for an improved regulator environment for small network operators and more generally, to promote internet freedom, privacy, and decentralized internet access. Purchasing property such as proprietary software or radio frequency spectrum rights in order to put these things in the commons. It is the belief of the PKT blockchain founding developers that any unaccountable authority, no matter how benevolent, will eventually fall victim to corruption, inefficiency or simple failure to innovate. Because of this, the PKT blockchain has an impeachment solution whereby every holder of PKT is able to cast a vote to impeach the Network Steward so a new Network Steward can take its place. Impeachment is not an insignificant event. For it to occur, it requires more than a 50% of the total PKT ever mined to \u201cVoteFor\u201d impeachment. If impeachment does occur, what follows is an automatic vote count and a change to the Network Steward address. How are Grants Awarded? \u00b6 Grants are awarded based on a funding criteria that is outlined on the Network Steward Github [here]. You start by socializing what you want to do with the community (try PKT.Chat, Discord or Telegram). When you have rough consensus, you move that conversation to a formal proposal. There are currently two ways to propose a project to the PKT Network Steward. If your project is large and has the benefit of accountants to be able to verify that the money has been spent appropriately, you can make a proposal directly to the Network Steward through its github [here]. Click [here] to submit a proposal Click [here] to download the submission template The Network Steward opens calls with a specified budget from time to time. Anyone can apply during these open calls. The Network Steward meets several times per year to review submitted projects. The minutes of these meetings are published in the github repository, along with the ongoing project statuses. Every transaction made by the Network Steward can be seen in the block explorer and is referred to in the Network Steward's github repository explaining the project that was funded. To make a proposal, you must create a pull request to the github repository and name it according to the naming convention defined in the repository readme. This adds a new project markdown file, as per the project template. Getting a proposal accepted is much like getting a pull request merged into a project. If you want to propose a smaller project and have the accounting and official reporting managed for you, you can propose to the User Operated Internet fund [here], which is funded by the Network Steward and administered by NLnet. NLnet is a well respected public benefit organization that is experienced at managing technology development projects. Network Steward Voting \u00b6 How voting works \u00b6 A vote consists of one two parts, VoteFor and VoteAgainst. VoteAgainst is a vote for impeachment, while VoteFor is a vote for who should become network steward in the event of an impeachment. A network steward is represented as a transaction output script rather than a script encoded key. An easy way to get the script for a given address is to pay some money to it and then explore the raw transaction and copy the output. Exploring a coinbase transaction we can see the output being paid to the network steward https://explorer.pkt.cash/address/ and the script for this output is 0020d5c1005c0d4012d3ae2672319e7f9eb15a57516aeefabbbc062265f67e308f2 If we double-check by querying pktd to find out what is the network steward, we will see that it shows the script that was paid to. So if we wanted, for instance, to change the network steward to https://explorer.pkt.cash/address/pGzmtW4Q2v4AWHcX8TYGqG5c1Eh5Ykg6fX, we would want to vote for the corresponding script 76a9147d9df4279212fd7def4c47abf2d5f3a6c6eaf4ae88ac and of course we probably want to vote against the current network steward as well. How to vote \u00b6 Voting is done by configuring your wallet to vote, whenever you spend money, your wallet will include a vote in every future payment of PKT which is made. If you want to speed up the voting process, you can configure your wallet to vote and then transfer all of your PKT to another wallet, in order to be sure it will all be voting. To configure your wallet to vote for https://explorer.pkt.cash/address/pGzmtW4Q2v4AWHcX8TYGqG5c1Eh5Ykg6fX and against https://explorer.pkt.cash/address, you would use the following workflow:","title":"What is the Network Steward?"},{"location":"learn/network-steward/#what-is-the-network-steward","text":"","title":"What is the Network Steward?"},{"location":"learn/network-steward/#introducing-the-network-steward","text":"The Network Steward is a mechanism built into the PKT blockchain to ensure there is continuous funding to build out the project roadmap. Since PKT is completely decentralized, with no central company, foundation or investors behind the project, the Network Steward is able to provide perpetual funding for development. As part of the consensus rules of the PKT blockchain, the publicly visible Network Steward wallet address receives 20% of every newly mined block. 100% of the funds are mandated to be paid out in the form of grants towards funding the Network Steward\u2019s areas of interest, including open-source technology development of the PKT Network. Unlike a pre-mine or founder's fee, the recipient of the Network Steward payout can be changed by a PoS vote. All coins that are not allocated within 129,600 blocks (~3 months) are automatically burned. More than 13% of the mined coins have been burned through 2022. You can check out the status of the burned coins and PoS vote to re-elect the Network Steward page on the block explorer page [here]. https://explorer.pkt.cash/address pkt1q6hqsqhqdgqfd8t3xwgceulu7k9d9w5t2amath0qxyfjlvl3s3u4sjza2g2","title":"Introducing the Network Steward"},{"location":"learn/network-steward/#who-is-the-network-steward","text":"This Network Steward address is a multi-signature group that requires 3 out of 5 signatures in order to make a payment. The current Network Stewards* are: Cjd \u2014 cjdns original author Arceliar \u2014 Yggdrasil original author Benhylau \u2014 Contributor at Toronto Mesh NeilAlexander \u2014 Yggdrasil release manager Backupbrain \u2014 Creator of NetNinja VPN device All of the participants have agreed not to enter into any relationships which would affect their ability to act impartially on behalf of the PKT project.","title":"Who is the Network Steward?"},{"location":"learn/network-steward/#how-does-the-network-steward-operate","text":"The persons in custody of the Network Steward wallet periodically meet to award grants in accordance with a strict criteria and mandate. The current mandate is that funds are to be used for: Financing the development of open source software, technology documentation and education resources for the PKT Network and community. Lobbying for an improved regulator environment for small network operators and more generally, to promote internet freedom, privacy, and decentralized internet access. Purchasing property such as proprietary software or radio frequency spectrum rights in order to put these things in the commons. It is the belief of the PKT blockchain founding developers that any unaccountable authority, no matter how benevolent, will eventually fall victim to corruption, inefficiency or simple failure to innovate. Because of this, the PKT blockchain has an impeachment solution whereby every holder of PKT is able to cast a vote to impeach the Network Steward so a new Network Steward can take its place. Impeachment is not an insignificant event. For it to occur, it requires more than a 50% of the total PKT ever mined to \u201cVoteFor\u201d impeachment. If impeachment does occur, what follows is an automatic vote count and a change to the Network Steward address.","title":"How does the Network Steward Operate?"},{"location":"learn/network-steward/#how-are-grants-awarded","text":"Grants are awarded based on a funding criteria that is outlined on the Network Steward Github [here]. You start by socializing what you want to do with the community (try PKT.Chat, Discord or Telegram). When you have rough consensus, you move that conversation to a formal proposal. There are currently two ways to propose a project to the PKT Network Steward. If your project is large and has the benefit of accountants to be able to verify that the money has been spent appropriately, you can make a proposal directly to the Network Steward through its github [here]. Click [here] to submit a proposal Click [here] to download the submission template The Network Steward opens calls with a specified budget from time to time. Anyone can apply during these open calls. The Network Steward meets several times per year to review submitted projects. The minutes of these meetings are published in the github repository, along with the ongoing project statuses. Every transaction made by the Network Steward can be seen in the block explorer and is referred to in the Network Steward's github repository explaining the project that was funded. To make a proposal, you must create a pull request to the github repository and name it according to the naming convention defined in the repository readme. This adds a new project markdown file, as per the project template. Getting a proposal accepted is much like getting a pull request merged into a project. If you want to propose a smaller project and have the accounting and official reporting managed for you, you can propose to the User Operated Internet fund [here], which is funded by the Network Steward and administered by NLnet. NLnet is a well respected public benefit organization that is experienced at managing technology development projects.","title":"How are Grants Awarded?"},{"location":"learn/network-steward/#network-steward-voting","text":"","title":"Network Steward Voting"},{"location":"learn/network-steward/#how-voting-works","text":"A vote consists of one two parts, VoteFor and VoteAgainst. VoteAgainst is a vote for impeachment, while VoteFor is a vote for who should become network steward in the event of an impeachment. A network steward is represented as a transaction output script rather than a script encoded key. An easy way to get the script for a given address is to pay some money to it and then explore the raw transaction and copy the output. Exploring a coinbase transaction we can see the output being paid to the network steward https://explorer.pkt.cash/address/ and the script for this output is 0020d5c1005c0d4012d3ae2672319e7f9eb15a57516aeefabbbc062265f67e308f2 If we double-check by querying pktd to find out what is the network steward, we will see that it shows the script that was paid to. So if we wanted, for instance, to change the network steward to https://explorer.pkt.cash/address/pGzmtW4Q2v4AWHcX8TYGqG5c1Eh5Ykg6fX, we would want to vote for the corresponding script 76a9147d9df4279212fd7def4c47abf2d5f3a6c6eaf4ae88ac and of course we probably want to vote against the current network steward as well.","title":"How voting works"},{"location":"learn/network-steward/#how-to-vote","text":"Voting is done by configuring your wallet to vote, whenever you spend money, your wallet will include a vote in every future payment of PKT which is made. If you want to speed up the voting process, you can configure your wallet to vote and then transfer all of your PKT to another wallet, in order to be sure it will all be voting. To configure your wallet to vote for https://explorer.pkt.cash/address/pGzmtW4Q2v4AWHcX8TYGqG5c1Eh5Ykg6fX and against https://explorer.pkt.cash/address, you would use the following workflow:","title":"How to vote"},{"location":"learn/packetcrypt/","text":"What is PacketCrypt? \u00b6 PacketCrypt is the world\u2019s first bandwidth-hard proof of work. It is the software that miners install to mine PKT Cash and which constructs the unique foundation of the PKT Blockchain. The PacketCrypt protocol is designed to reward miners in PKT Cash for transmitting data around the world. This incentivizes and requires high CPU encryption plus maximum bandwidth throughput to optimize yields. Miners are required to become hyper aware of and motivated to increase their bandwidth upload and download throughput to efficiently communicate with nodes across the network. PKT mining favors increased bandwidth over CPU power, rewarding people that connect high speed bandwidth infrastructure to the network. PacketCrypt utilizes 2 distinct stages: announcement mining and block mining. Any internet connected device can become an announcement miner and mine PKT Cash by installing and running the PacketCrypt software. Announcement miners running PacketCrypt upload small, difficult to compress (1KB) messages called announcements to block miners. Block miners, otherwise known as PKT mining pools, must maximize the number of announcements they collect for each block. To accomplish this, PKT mining pools can get a discount on the difficulty of the work they must do by coordinating with community announcement miners and fairly paying announcement miners in PKT Cash to continuously supply them with fresh announcements. Optimal mining results are achieved through this cooperation between miners. The result is a fully decentralized network topography that is powered by the people. These various announcement miners and PKT mining pools represent the core infrastructure of the PKT Network, along with its integrated VPN and wifi sharing capabilities. To learn more about PacketCrypt check out the introduction to PKT Mining [here].","title":"What is PacketCrypt?"},{"location":"learn/packetcrypt/#what-is-packetcrypt","text":"PacketCrypt is the world\u2019s first bandwidth-hard proof of work. It is the software that miners install to mine PKT Cash and which constructs the unique foundation of the PKT Blockchain. The PacketCrypt protocol is designed to reward miners in PKT Cash for transmitting data around the world. This incentivizes and requires high CPU encryption plus maximum bandwidth throughput to optimize yields. Miners are required to become hyper aware of and motivated to increase their bandwidth upload and download throughput to efficiently communicate with nodes across the network. PKT mining favors increased bandwidth over CPU power, rewarding people that connect high speed bandwidth infrastructure to the network. PacketCrypt utilizes 2 distinct stages: announcement mining and block mining. Any internet connected device can become an announcement miner and mine PKT Cash by installing and running the PacketCrypt software. Announcement miners running PacketCrypt upload small, difficult to compress (1KB) messages called announcements to block miners. Block miners, otherwise known as PKT mining pools, must maximize the number of announcements they collect for each block. To accomplish this, PKT mining pools can get a discount on the difficulty of the work they must do by coordinating with community announcement miners and fairly paying announcement miners in PKT Cash to continuously supply them with fresh announcements. Optimal mining results are achieved through this cooperation between miners. The result is a fully decentralized network topography that is powered by the people. These various announcement miners and PKT mining pools represent the core infrastructure of the PKT Network, along with its integrated VPN and wifi sharing capabilities. To learn more about PacketCrypt check out the introduction to PKT Mining [here].","title":"What is PacketCrypt?"},{"location":"learn/pkt-cash/","text":"What is PKT Cash? \u00b6 PKT is a native coin that is mined by PKT mining pools and paid to announcement miners when running the PacketCrypt mining algorithm. There is no centralized issuer of PKT Cash, no pre-mine, and no centralized treasury. PKT Cash\u2019s minimum value is the cost to mine the coin, which includes processing power, plus bandwidth. PKT Cash is a Bitcoin fork and true proof of work, so it is a coin, not a token. PKT blocktimes are every 60 seconds, which makes PKT 10x faster than Bitcoin. Currently PKT can handle approximately 70-100 transactions per second. However, PKT Cash is designed for microtransactions with near-zero gas fees. In 2023, PKT Cash will become Lightning Network enabled using the PKT Lightning Daemon (PLD). PLD will enable PKT to process near-infinite transactions per second. Since PKT Cash is generated from a fully decentralized fork of Bitcoin, it is considered to be a commodity, similar to Bitcoin. Additionally, since PKT is a fully decentralized clone of the Bitcoin codebase, the legal and regulatory framing is probably similar.","title":"What is PKT Cash?"},{"location":"learn/pkt-cash/#what-is-pkt-cash","text":"PKT is a native coin that is mined by PKT mining pools and paid to announcement miners when running the PacketCrypt mining algorithm. There is no centralized issuer of PKT Cash, no pre-mine, and no centralized treasury. PKT Cash\u2019s minimum value is the cost to mine the coin, which includes processing power, plus bandwidth. PKT Cash is a Bitcoin fork and true proof of work, so it is a coin, not a token. PKT blocktimes are every 60 seconds, which makes PKT 10x faster than Bitcoin. Currently PKT can handle approximately 70-100 transactions per second. However, PKT Cash is designed for microtransactions with near-zero gas fees. In 2023, PKT Cash will become Lightning Network enabled using the PKT Lightning Daemon (PLD). PLD will enable PKT to process near-infinite transactions per second. Since PKT Cash is generated from a fully decentralized fork of Bitcoin, it is considered to be a commodity, similar to Bitcoin. Additionally, since PKT is a fully decentralized clone of the Bitcoin codebase, the legal and regulatory framing is probably similar.","title":"What is PKT Cash?"},{"location":"learn/pkt-network/","text":"PKT Documentation \u00b6 Documentation for the PKT project Wallet setup \u00b6 There are several wallets which you can choose from, the easiest to set up are PKT Electrum which has a Graphical UI and supports Windows, Mac and Linux. PKT Wallet which has a Graphical UI and supports MacOS and works great with miners. Pkt.world Wallet which has a Graphical UI for Windows, works with miners and includes a built-in miner. You can also setup PKT Wallet which is command line only but has greater scalability and privacy features. Mining \u00b6 PKT is mined using the PacketCrypt bandwidth hard mining algorithm. You can learn how to mine on the Mining page. Running a pktd instance \u00b6 You can setup a pktd instance using the instructions on pktd . Help and Community \u00b6 To get help with the technologies in the PKT project or to hang out in the community join us on the PKT Chat project chat.","title":"PKT Documentation"},{"location":"learn/pkt-network/#pkt-documentation","text":"Documentation for the PKT project","title":"PKT Documentation"},{"location":"learn/pkt-network/#wallet-setup","text":"There are several wallets which you can choose from, the easiest to set up are PKT Electrum which has a Graphical UI and supports Windows, Mac and Linux. PKT Wallet which has a Graphical UI and supports MacOS and works great with miners. Pkt.world Wallet which has a Graphical UI for Windows, works with miners and includes a built-in miner. You can also setup PKT Wallet which is command line only but has greater scalability and privacy features.","title":"Wallet setup"},{"location":"learn/pkt-network/#mining","text":"PKT is mined using the PacketCrypt bandwidth hard mining algorithm. You can learn how to mine on the Mining page.","title":"Mining"},{"location":"learn/pkt-network/#running-a-pktd-instance","text":"You can setup a pktd instance using the instructions on pktd .","title":"Running a pktd instance"},{"location":"learn/pkt-network/#help-and-community","text":"To get help with the technologies in the PKT project or to hang out in the community join us on the PKT Chat project chat.","title":"Help and Community"},{"location":"learn/pkt/","text":"What is PKT? \u00b6 PKT is an open source, layer 1 blockchain project and decentralized physical infrastructure (DePIN) mesh network powered by its global community. The project supports open internet access and scaling the decentralized web. The PKT project supports the core vision that basic, censorship-resistant internet access should be globally accessible. Rather than pay centralized companies for internet access, it\u2019s designed so basic access can be free and people can pay providers when they need fast speeds. PKT utilizes the cjdns routing protocol to enable a decentralized, censorship-resistant, high-speed data network. The PKT Network is a completely sovereign part of the internet, which is accessible via VPN. Anyone can build censorship-resistant websites in the PKT Network. These websites can use their IPv6 web URL as a PKT payment address, streamlining peer-to-peer payments in the network. There are many reasons why open internet access is important, but none are more fundamental than lowering the barrier to entry so access to information and connectivity is available to everyone. By participating in the PKT project, and holding the PKT cryptocurrency, you are helping restore the founding ethos of the internet: decentralization. Why does PKT exist? \u00b6 Connectivity is humanity\u2019s source of vitality, information and communication. PKT stands for the belief that internet access is a human entitlement. However, lowering the barrier for internet access is not in the best interest of centralized companies, internet service providers (ISP) and governments. Why? Because these entities are motivated by money and power, and their control is diminished if global internet access is free. Additionally, many corporations and governments don\u2019t support free unlimited internet access due to regional or political censorship ideologies or capitalist priorities. Despite the founding principle for the internet to be decentralized, today, internet access is not. It is for these reasons that PKT is designed to usher in a new paradigm of connectivity. This helps realize a new era, where the physical infrastructure of the internet is powered by the people, and accessibility is open and free. How does PKT Expand Internet Access? \u00b6 The PKT project presents an alternative approach to traditional internet service through mesh networking. First, PKT economically incentivizes individuals who have internet access to set up a PKT miner and contribute computer processing and bandwidth to secure the PKT blockchain. Similar to how Bitcoin miners earn BTC as they mine the Bitcoin, PKT miners earn PKT when they mine PKT. Since PKT mining requires bandwidth, this creates a general demand for bandwidth. Second, individuals with bandwidth can set up a cjdns node. Cjdns is the mesh networking protocol that enables the high speed data infrastructure for the PKT Network. As more people connect, this builds a decentralized, peer-to-peer network. Third, individuals can share mesh network internet access to the PKT Network. This internet access functions similar to a wifi access point. However, all connectivity is end-to-end encrypted. Wifi access point operators can choose to offer free access or paid access. The objective of the PKT Network is to decouple the physical aspect of deploying and maintaining internet infrastructure (such as overhead and undersea cables), from the business and technical aspects of internet service such as billing, network engineering, and support. This way anyone can safely and securely become an internet provider via mesh networking, thus expanding internet access worldwide. The fundamental value of dividing these internet service efforts is to empower everyday people to cover the cost of deploying and maintaining mesh network wifi access points. This ultimately lowers the cost of providing localized internet access and drives competition in the multi-trillion dollar annual internet industry. This can result in PKT\u2019s mission to get the next billion people online. How can PKT Accomplish Its Goals? \u00b6 Community projects can achieve the best results when focused on use cases, utility and community participation. When inspiring community participation, three core reasons people may take action: necessity they believe strongly they are being paid In the mission to extend internet access and expand the decentralized web, PKT economically incentivizes individuals to participate. Additionally, many contributors truly believe in the mission to connect the unconnected. Since PKT is a fully decentralized community project, like Bitcoin, everyone in the community is part of the project team. There is no central authority or centralized infrastructure. However, there are many businesses and contributors in the PKT ecosystem who are developing the [roadmap]. This fosters the decentralized nature of the project. Visit the Ecosystem page [here] to see a (non-exhaustive) list of the major projects and contributors. How does the PKT blockchain work? \u00b6 PKT is the world\u2019s first and only bandwidth-hard proof-of-work blockchain. Anyone with internet access can install the mining software called PacketCrypt and start mining to earn PKT Cash. Just as Bitcoin introduced the dawn of a new era of digital money, PKT is introducing a new paradigm for how people can use their internet resources to expand internet accessibility. Click here to learn more about PacketCrypt. How can I set up a miner? \u00b6 For a tutorial on how to start mining PKT and earn PKT Cash, for this guide: [Intro to PKT Mining].","title":"What is PKT?"},{"location":"learn/pkt/#what-is-pkt","text":"PKT is an open source, layer 1 blockchain project and decentralized physical infrastructure (DePIN) mesh network powered by its global community. The project supports open internet access and scaling the decentralized web. The PKT project supports the core vision that basic, censorship-resistant internet access should be globally accessible. Rather than pay centralized companies for internet access, it\u2019s designed so basic access can be free and people can pay providers when they need fast speeds. PKT utilizes the cjdns routing protocol to enable a decentralized, censorship-resistant, high-speed data network. The PKT Network is a completely sovereign part of the internet, which is accessible via VPN. Anyone can build censorship-resistant websites in the PKT Network. These websites can use their IPv6 web URL as a PKT payment address, streamlining peer-to-peer payments in the network. There are many reasons why open internet access is important, but none are more fundamental than lowering the barrier to entry so access to information and connectivity is available to everyone. By participating in the PKT project, and holding the PKT cryptocurrency, you are helping restore the founding ethos of the internet: decentralization.","title":"What is PKT?"},{"location":"learn/pkt/#why-does-pkt-exist","text":"Connectivity is humanity\u2019s source of vitality, information and communication. PKT stands for the belief that internet access is a human entitlement. However, lowering the barrier for internet access is not in the best interest of centralized companies, internet service providers (ISP) and governments. Why? Because these entities are motivated by money and power, and their control is diminished if global internet access is free. Additionally, many corporations and governments don\u2019t support free unlimited internet access due to regional or political censorship ideologies or capitalist priorities. Despite the founding principle for the internet to be decentralized, today, internet access is not. It is for these reasons that PKT is designed to usher in a new paradigm of connectivity. This helps realize a new era, where the physical infrastructure of the internet is powered by the people, and accessibility is open and free.","title":"Why does PKT exist?"},{"location":"learn/pkt/#how-does-pkt-expand-internet-access","text":"The PKT project presents an alternative approach to traditional internet service through mesh networking. First, PKT economically incentivizes individuals who have internet access to set up a PKT miner and contribute computer processing and bandwidth to secure the PKT blockchain. Similar to how Bitcoin miners earn BTC as they mine the Bitcoin, PKT miners earn PKT when they mine PKT. Since PKT mining requires bandwidth, this creates a general demand for bandwidth. Second, individuals with bandwidth can set up a cjdns node. Cjdns is the mesh networking protocol that enables the high speed data infrastructure for the PKT Network. As more people connect, this builds a decentralized, peer-to-peer network. Third, individuals can share mesh network internet access to the PKT Network. This internet access functions similar to a wifi access point. However, all connectivity is end-to-end encrypted. Wifi access point operators can choose to offer free access or paid access. The objective of the PKT Network is to decouple the physical aspect of deploying and maintaining internet infrastructure (such as overhead and undersea cables), from the business and technical aspects of internet service such as billing, network engineering, and support. This way anyone can safely and securely become an internet provider via mesh networking, thus expanding internet access worldwide. The fundamental value of dividing these internet service efforts is to empower everyday people to cover the cost of deploying and maintaining mesh network wifi access points. This ultimately lowers the cost of providing localized internet access and drives competition in the multi-trillion dollar annual internet industry. This can result in PKT\u2019s mission to get the next billion people online.","title":"How does PKT Expand Internet Access?"},{"location":"learn/pkt/#how-can-pkt-accomplish-its-goals","text":"Community projects can achieve the best results when focused on use cases, utility and community participation. When inspiring community participation, three core reasons people may take action: necessity they believe strongly they are being paid In the mission to extend internet access and expand the decentralized web, PKT economically incentivizes individuals to participate. Additionally, many contributors truly believe in the mission to connect the unconnected. Since PKT is a fully decentralized community project, like Bitcoin, everyone in the community is part of the project team. There is no central authority or centralized infrastructure. However, there are many businesses and contributors in the PKT ecosystem who are developing the [roadmap]. This fosters the decentralized nature of the project. Visit the Ecosystem page [here] to see a (non-exhaustive) list of the major projects and contributors.","title":"How can PKT Accomplish Its Goals?"},{"location":"learn/pkt/#how-does-the-pkt-blockchain-work","text":"PKT is the world\u2019s first and only bandwidth-hard proof-of-work blockchain. Anyone with internet access can install the mining software called PacketCrypt and start mining to earn PKT Cash. Just as Bitcoin introduced the dawn of a new era of digital money, PKT is introducing a new paradigm for how people can use their internet resources to expand internet accessibility. Click here to learn more about PacketCrypt.","title":"How does the PKT blockchain work?"},{"location":"learn/pkt/#how-can-i-set-up-a-miner","text":"For a tutorial on how to start mining PKT and earn PKT Cash, for this guide: [Intro to PKT Mining].","title":"How can I set up a miner?"},{"location":"learn/wpkt/","text":"What is WPKT? \u00b6 WPKT stands for wrapped PKT, thus the \"W\" in WPKT. WPKT exists on Binance Smart Chain blockchain. WPKT can only come into existence when someone sends PKT to the vault address, which converts the PKT into WPKT. As such, WPKT cannot be inflated since it has a 1-to-1 peg with PKT. Since there will only ever be 6 billion PKT in existence, there can never be more WPKT than the total amount of PKT in existence. WPKT is an BEP-20 token and is compatible with all platforms and wallets that accept and transact with the BEP-20 token standard. To learn how to swap PKT to WPK or visa versa, click [here].","title":"What is WPKT?"},{"location":"learn/wpkt/#what-is-wpkt","text":"WPKT stands for wrapped PKT, thus the \"W\" in WPKT. WPKT exists on Binance Smart Chain blockchain. WPKT can only come into existence when someone sends PKT to the vault address, which converts the PKT into WPKT. As such, WPKT cannot be inflated since it has a 1-to-1 peg with PKT. Since there will only ever be 6 billion PKT in existence, there can never be more WPKT than the total amount of PKT in existence. WPKT is an BEP-20 token and is compatible with all platforms and wallets that accept and transact with the BEP-20 token standard. To learn how to swap PKT to WPK or visa versa, click [here].","title":"What is WPKT?"},{"location":"mining/","text":"Mining \u00b6 PacketCrypt is a bandwidth hard proof of work , this means it requires lots of bandwidth to mine. Miners collaborate with one another by sending small messages (called Announcements ) and the sending of these messages requires a large amount of bandwidth . Miners who are working in collaboration with one another are members of a mining pool, therefore all mining of PacketCrypt is done in pools. PacketCrypt mining is split into two distinct stages: Announcement Mining - Using your CPU to create Announcements Block Mining - Collecting Announcements from Announcement Miners and using them to mine blocks Block mining is typically done at the mining pool's datacenter, however Announcement mining can be done from anywhere. How to Announcement mine \u00b6 There are a number of options available when it comes to installing the PacketCrpyt announcement miner. Choose whichever best suits your technical ability: 1. Install a Pre-built Binary \u00b6 Pre-built packetcrypt binaries (for linux) or installation packages (for macos) and archives (for windows) can be downloaded from packetcrypt releases page . For windows , download the zip archive suffixed with -windows.zip and extract its content. For macos , download the package suffixed with .pkg and click on its icon in the Finder for installation. For linux , download the binary suffixed with -linux_amd64 and rename it packetcrypt . If you're on Arch linux or Manjaro, you can install the packetcrypt AUR package 2. Deploy a Docker Image \u00b6 There is a PacketCrypt Docker image available, which can be used for announcement mining. To install: Download and install Docker for your operating system. Download the PacketCrypt Docker image: $ docker pull thomasjp0x42/packetcrypt There are also PacketCrypt Docker images built without the portable flag ( --no-portable ) which may increase the performance of the announcement mining while reducing CPU compatibility. One such image (compiled on AMD 5950x) is available at thomasjp0x42/packetcrypt-amd64 . Additionally, for ARM devices such as Raspberry Pi, there is an image available at thomasjp0x42/packetcrypt-arm64 . The arm64 image will also work on Apple silicon such as the M1 and M2 chips. Run the container similar to the commands described in the Begin Announcement Mining section, except replace this part of the command: $ packetcrypt with this command to run PacketCrypt from Docker: $ docker run thomasjp0x42/packetcrypt The final command will be formatted like this: $ docker run thomasjp0x42/packetcrypt ann -p More information can be found at the PacketCrypt DockerHub page 3. Build From Source \u00b6 Building from source will generally offer the best mining performance but requires more technical knowledge than the previous two options. First install rust if you haven't, see: rustup git clone https://github.com/cjdelisle/packetcrypt_rs cd packetcrypt_rs cargo build --release See the PacketCrypt GitHub repository for more detailed instructions. Begin Announcement Mining \u00b6 Important You cannot mine into the electrum wallet , You can only mine into the Command Line Wallet , the Pkt.World Wallet or the Mac GUI Wallet . To begin mining, you will need the address of your wallet and you will need to choose a pool. There are two ways to configure the announcement miner; by using CLI parameters or by using a configuration file: Using the CLI packetcrypt ann -p pool_1 [pool_2 pool_3 pool_4] [or for windows] packetcrypt.exe ann -p pool_1 [pool_2 pool_3 pool_4] Using a Configuration File A configuration file must be in JSON format. The file can be loaded from the local filesystem or from a web-accessible location. Any CLI parameters used will overide the corresponding settings in the configuration file. Example config.json: { \"payment_addr\": \"\", \"pools\": [ \"pool_1\", \"pool_2\", \"pool_3\", \"pool_4\" ] } packetcrypt ann -c \"./config.json\" [or] packetcrypt ann -c \"https://example.com/config.json\" [or for windows] packetcrypt.exe ann -c \"./config.json\" [or] packetcrypt.exe ann -c \"https://example.com/config.json\" Announcement mining can be done into a single pool or multiple pools. When you announcement mine into multiple pools, you will be paid by each pool that you submit announcements to. pool_1 is the pool running the highest difficulty. If you notice problems, you can test listing the pools in a different order. The number of pools you mine into is at your discretion. If a pool is down or malfunctioning you will notice the pool is not mining at [100%] in your mining feed and you can choose to remove the under-performing or malfunctioning pool. How to install a PKT miner on Mac \u00b6 Install the Zulu or CLI PKT Wallet from https://docs.pkt.cash Download the PacketCrypt.pkg for mac Open your Terminal Install Rust by entering in the command: $ curl --proto '=https' --tlsv1.2 -sSf * https://sh.rustup.rs | sh Press 1 to confirm Enter the command: $ sudo install make Enter the command: $ git clone https://github.com/cjdelisle/packetcrypt_rs Enter the command: $ cd packetcrypt_rs Enter the command: $ ~/.cargo/bin/cargo build --release Enter the command: $ ./target/release/packetcrypt ann -p [your PKT Wallet Address] [pool 1] [pool 2] [pool 3] [pool 4] Choosing Pools to mine in \u00b6 You can mine in as many pools as you have the bandwidth to supply. The same data will be uploaded so your CPU is only used once. Currently the pools which are regularly winning blocks include: Pkteer: http://pool.pkteer.com PKTPool: http://pool.pktpool.io PktWorld: http://pool.pkt.world Zetahash (f.k.a. Srizbi): https://stratum.zetahash.com In general the recommendation is to list the pool with highest difficulty in the first position to ensure your announcements will be accepted, as the standardized policy is to accept announcements of a higher difficulty for pools with a lower base difficulty. In some cases the rewards might vary depending on the pool order regardless of difficulty, subject to custom policies implemented by the respective pools. (Check the relevant channels on Discord for current pool statuses) You should test your daily earnings on each pool to see which one is best. Your mining revenue depends on how much each pool allocates towards announcement miners as well as how much hardware they are using in-house. The pools are winning different blocks and if you mine to just one pool, you're not getting any payment from the others when they win a block. It's the same with mining to a pool that is not winning any blocks. Limiting System Resource Usage \u00b6 Limiting the system resources available to Packetcrypt may negatively effect your mining power but can be useful to conserve resources for other processess. Limit CPU Usage \u00b6 Announcement mining is a resource intensive process. By default, Packetcrypt will use 100% of the available CPU resources. CPU usage can be limited by assigning a limited number of threads to packetcrypt using the -t CLI parameter or \"threads\" key if using a configuration file. Example of assigning four (4) threads to Packetcrypt: packetcrypt ann -p pool_1 [pool_2 pool_3 pool_4] -t 4 or { \"threads\" 4 } Limit Bandwidth Usage \u00b6 Bandwidth usage is directly related to two main factors: 1 - Mining difficulty of the primary pool (the first pool listed in Packetcrypt pool configuration) A lower difficulty means higher bandwidth usage 2 - The number of pools mined Packetcrypt will send the same Announcements to each pool mined Bandwidth usage can therefore be limited by selecting a higher difficulty pool as the primary pool and/or by mining to fewer pools. Block Mining & Running a Pool \u00b6 Because each block miner must use as much bandwidth as all of the announcement miners combined , block mining is typically done at the location of the pool. Even a pool operator who wanted to support external block mining would find that the pool itself would need enough upload bandwidth to match all of the block miners - which would be completely untenable. If you are interested in block mining, contact the pool operator and discuss sending hardware to their location. Starting your own pool requires setting up a number of services: pktd node (one or more) - One pktd instance is required for the Master to function, each of the Block Handlers may optionally use separate pktd nodes. Master (one) - This node coordinates all of the others and provides work files and configuration Ann Handler (one or more) - These are high performance nodes which accept announcements from the announcement miners in the network, they also provide announcements to the block miners. As you scale up the amount of bandwidth in the pool, you will need to add more Ann handlers. Block Miner (one or more) - These nodes download announcements from the announcement handlers and use them in the mining process to mine blocks. Block Handlers (one or more) - These nodes receive \"block shares\" from the block miners and submit blocks if Paymaker (1) - This node receives updates from the Ann Handlers and Block Handlers and keeps track of who should be paid. The Paymaker sends configuration to the pktd node which is used by the Master in order to make the pool pay out the announcement and block miners PacketCrypt Data Flow \u00b6 \u2588 Orange: Announcements are sent from the Announcement miners to the Ann Handlers and then to the Block miners \u2588 Blue: Block shares are sent from block miners to Block Handler(s) \u2588 Purple: Winning blocks are submitted by the Block Handler(s) to pktd and the PKT network \u2588 Pink: Block Handlers and Ann Handlers inform Paymaker of work done by announcement and block miners \u2588 Green: Paymaker configures pktd instance to create blocks which pay the people who have been mining \u2588 Brown: Master gets block templates from pktd instance Black dotted line: All nodes request configuration and block templates from Master node More Information and PacketCrypt Pool Code \u00b6 The code and documentation for running a pool is available on the C / nodejs version of the PacketCrypt project, the new Rust version only contains Announcement Miner and Announcement Handlers. Announcement Difficulty \u00b6 PacketCrypt is designed in such a way that a mining pool can double its effective power by: Doubling the total block mining computation effort Doubling the total announcement mining computation effort, or Doubling the amount of bandwidth between announcement miners and the pool The way that a pool operator limits the amount of bandwidth flowing into the pool, to prevent overloading of the network, is by setting what is known as the announcement difficulty . The announcement difficulty for a pool specifies how much work must be done on an announcement in order for the announcement to be accepted and paid out by the pool. Announcement difficulty serves to slow down the announcement miners to protect the pool's network. In general, doubling the announcement difficulty will halve the amount of bandwidth used by the pool and will also halve the pool's overall mining power, with a limit that setting the announcement difficulty lower than 2 does not bring any additional value. To explain why it works like this, we need to examine the PacketCrypt algorithm rules and the in particular how the block mining software decides which announcements to use when attempting to mine a block. Announcement Set Selection \u00b6 PacketCrypt algorithm allows block miners to perform less work if they are able to prove that they had a certain number of \"high value\" announcements in memory at the time of mining, the exact ratio of actual work a block miner must do to the amount of work the PKT blockchain requires is called the power multipler . For a block miner seeking to optimize their power multiplier, every announcement has a particular level of utility value which is based on the amount of work that was done by the announcement miner (announcement difficulty) and how old the announcement is. We call this the effective difficulty . The effective difficulty of an announcement starts off as the actual difficulty of the work done to mine it and then decreases by half every block-period until it is less than 1 and the announcement is no longer usable for mining. The block mining software selects a subset of announcements which which will give it the best power multiplier based on the PacketCrypt algorithm: power_multiplier = min(effective_difficulty) * ann_count ** 2 The min(effective_difficulty) is the effective difficulty of the \"least valuable\" announcement that is being mined with. Lets assume that announcement miners are providing a steady supply of 1000 announcements per block-period and all announcements have an initial announcement difficulty of 128. The block mining software can choose to mine with 1000 announcements at 128 effective difficulty, or with 2000 announcements at 64 effective difficulty, or with 3000 announcements at 32 effective difficulty and so on. The best choice is to use the previous three block periods which provides a power multiplier that is 225% higher than that of using just the most recent 1 period worth of announcements. This curve is the same no matter what difficulty we are starting with. Optimal Difficulty Curve \u00b6 Knowing that the optimal announcement set is all of those announcements mined over the past 3 block periods, we can compute the overall power of a pool as the announcement difficulty is raised. At announcement difficulty 1, announcements cannot be used for more than 1 block, but if we imagine that the announcement mining community can produce 1000 announcements per block at difficulty 1 then we can reason that the power multiplier will be 1000 ** 2 or 1 million. At difficulty 2 we can expect the announcement miners will produce 500 announcements per block period but since 2 block periods can be used, the power multiplier is the same. At difficulty 4, the announcement miners will produce 250 announcements per block period and they will be valid for 3 block periods making the power multiplier 750 ** 2 or 562,500. From here, the power output of the power multiplier of the optimal announcement set halves for each doubling of the announcement difficulty, making the optimal difficulty 2 . FAQ for ANN Miners \u00b6 What does overflow mean? \u00b6 When the ann handler receives an announcement, it puts it into a queue, when the queue fills up it responds overflow immediately. The queue can become long, so you may receive \"operation timed out\" you're still being paid, when you receive \"overflow\" you are not being paid. Unfortunately, you may also receive \"operation timed out\" because the handler is unresponsive, it's not obvious which is the reason from looking at the logs. For example, what you will see in the AnnMiner Logs: 1618394538 INFO annmine.rs:519 467 Ke/s 28.56Mb/s overflow: [0, 0, 3072, 0] uploading: [0, 0, 17632, 0] accept/reject: [26932/0, 0/0, 4856/0, 796/0] - goodrate: [100%, 100%, 61%, 100%] 467 Ke/s 467 kilo-encryptions (thousands of encryptions) per second of mining power. 28.56Mb/s Total upload bandwidth (to all pools - combined) overflow: [0, 0, 3072, 0] Overflowed the internal queue of the ann miner, before it was even able to upload to the pool, one number for each pool you're mining to. 3072 Number of anns which are not uploaded to pool #3. uploading [0, 0, 17632, 0] Number of anns currently in-flight in active http requests, again 3rd pool is a problem, others are doing well (in this example). accept/reject [26932/0, 0/0, 4856/0, 796/0] Anns accepted/rejected by each pool, these numbers are based on the previous 10 seconds, pool #2 is giving a zero accepted which might be an issue, keep watching the next message 10 seconds later for another update. goodrate [100%, 100%, 61%, 100%] Goodrate = number of anns accepted divided by number of anns produced.","title":"Mining"},{"location":"mining/#mining","text":"PacketCrypt is a bandwidth hard proof of work , this means it requires lots of bandwidth to mine. Miners collaborate with one another by sending small messages (called Announcements ) and the sending of these messages requires a large amount of bandwidth . Miners who are working in collaboration with one another are members of a mining pool, therefore all mining of PacketCrypt is done in pools. PacketCrypt mining is split into two distinct stages: Announcement Mining - Using your CPU to create Announcements Block Mining - Collecting Announcements from Announcement Miners and using them to mine blocks Block mining is typically done at the mining pool's datacenter, however Announcement mining can be done from anywhere.","title":"Mining"},{"location":"mining/#how-to-announcement-mine","text":"There are a number of options available when it comes to installing the PacketCrpyt announcement miner. Choose whichever best suits your technical ability:","title":"How to Announcement mine"},{"location":"mining/#1-install-a-pre-built-binary","text":"Pre-built packetcrypt binaries (for linux) or installation packages (for macos) and archives (for windows) can be downloaded from packetcrypt releases page . For windows , download the zip archive suffixed with -windows.zip and extract its content. For macos , download the package suffixed with .pkg and click on its icon in the Finder for installation. For linux , download the binary suffixed with -linux_amd64 and rename it packetcrypt . If you're on Arch linux or Manjaro, you can install the packetcrypt AUR package","title":"1. Install a Pre-built Binary"},{"location":"mining/#2-deploy-a-docker-image","text":"There is a PacketCrypt Docker image available, which can be used for announcement mining. To install: Download and install Docker for your operating system. Download the PacketCrypt Docker image: $ docker pull thomasjp0x42/packetcrypt There are also PacketCrypt Docker images built without the portable flag ( --no-portable ) which may increase the performance of the announcement mining while reducing CPU compatibility. One such image (compiled on AMD 5950x) is available at thomasjp0x42/packetcrypt-amd64 . Additionally, for ARM devices such as Raspberry Pi, there is an image available at thomasjp0x42/packetcrypt-arm64 . The arm64 image will also work on Apple silicon such as the M1 and M2 chips. Run the container similar to the commands described in the Begin Announcement Mining section, except replace this part of the command: $ packetcrypt with this command to run PacketCrypt from Docker: $ docker run thomasjp0x42/packetcrypt The final command will be formatted like this: $ docker run thomasjp0x42/packetcrypt ann -p More information can be found at the PacketCrypt DockerHub page","title":"2. Deploy a Docker Image"},{"location":"mining/#3-build-from-source","text":"Building from source will generally offer the best mining performance but requires more technical knowledge than the previous two options. First install rust if you haven't, see: rustup git clone https://github.com/cjdelisle/packetcrypt_rs cd packetcrypt_rs cargo build --release See the PacketCrypt GitHub repository for more detailed instructions.","title":"3. Build From Source"},{"location":"mining/#begin-announcement-mining","text":"Important You cannot mine into the electrum wallet , You can only mine into the Command Line Wallet , the Pkt.World Wallet or the Mac GUI Wallet . To begin mining, you will need the address of your wallet and you will need to choose a pool. There are two ways to configure the announcement miner; by using CLI parameters or by using a configuration file: Using the CLI packetcrypt ann -p pool_1 [pool_2 pool_3 pool_4] [or for windows] packetcrypt.exe ann -p pool_1 [pool_2 pool_3 pool_4] Using a Configuration File A configuration file must be in JSON format. The file can be loaded from the local filesystem or from a web-accessible location. Any CLI parameters used will overide the corresponding settings in the configuration file. Example config.json: { \"payment_addr\": \"\", \"pools\": [ \"pool_1\", \"pool_2\", \"pool_3\", \"pool_4\" ] } packetcrypt ann -c \"./config.json\" [or] packetcrypt ann -c \"https://example.com/config.json\" [or for windows] packetcrypt.exe ann -c \"./config.json\" [or] packetcrypt.exe ann -c \"https://example.com/config.json\" Announcement mining can be done into a single pool or multiple pools. When you announcement mine into multiple pools, you will be paid by each pool that you submit announcements to. pool_1 is the pool running the highest difficulty. If you notice problems, you can test listing the pools in a different order. The number of pools you mine into is at your discretion. If a pool is down or malfunctioning you will notice the pool is not mining at [100%] in your mining feed and you can choose to remove the under-performing or malfunctioning pool.","title":"Begin Announcement Mining"},{"location":"mining/#how-to-install-a-pkt-miner-on-mac","text":"Install the Zulu or CLI PKT Wallet from https://docs.pkt.cash Download the PacketCrypt.pkg for mac Open your Terminal Install Rust by entering in the command: $ curl --proto '=https' --tlsv1.2 -sSf * https://sh.rustup.rs | sh Press 1 to confirm Enter the command: $ sudo install make Enter the command: $ git clone https://github.com/cjdelisle/packetcrypt_rs Enter the command: $ cd packetcrypt_rs Enter the command: $ ~/.cargo/bin/cargo build --release Enter the command: $ ./target/release/packetcrypt ann -p [your PKT Wallet Address] [pool 1] [pool 2] [pool 3] [pool 4]","title":"How to install a PKT miner on Mac"},{"location":"mining/#choosing-pools-to-mine-in","text":"You can mine in as many pools as you have the bandwidth to supply. The same data will be uploaded so your CPU is only used once. Currently the pools which are regularly winning blocks include: Pkteer: http://pool.pkteer.com PKTPool: http://pool.pktpool.io PktWorld: http://pool.pkt.world Zetahash (f.k.a. Srizbi): https://stratum.zetahash.com In general the recommendation is to list the pool with highest difficulty in the first position to ensure your announcements will be accepted, as the standardized policy is to accept announcements of a higher difficulty for pools with a lower base difficulty. In some cases the rewards might vary depending on the pool order regardless of difficulty, subject to custom policies implemented by the respective pools. (Check the relevant channels on Discord for current pool statuses) You should test your daily earnings on each pool to see which one is best. Your mining revenue depends on how much each pool allocates towards announcement miners as well as how much hardware they are using in-house. The pools are winning different blocks and if you mine to just one pool, you're not getting any payment from the others when they win a block. It's the same with mining to a pool that is not winning any blocks.","title":"Choosing Pools to mine in"},{"location":"mining/#limiting-system-resource-usage","text":"Limiting the system resources available to Packetcrypt may negatively effect your mining power but can be useful to conserve resources for other processess.","title":"Limiting System Resource Usage"},{"location":"mining/#limit-cpu-usage","text":"Announcement mining is a resource intensive process. By default, Packetcrypt will use 100% of the available CPU resources. CPU usage can be limited by assigning a limited number of threads to packetcrypt using the -t CLI parameter or \"threads\" key if using a configuration file. Example of assigning four (4) threads to Packetcrypt: packetcrypt ann -p pool_1 [pool_2 pool_3 pool_4] -t 4 or { \"threads\" 4 }","title":"Limit CPU Usage"},{"location":"mining/#limit-bandwidth-usage","text":"Bandwidth usage is directly related to two main factors: 1 - Mining difficulty of the primary pool (the first pool listed in Packetcrypt pool configuration) A lower difficulty means higher bandwidth usage 2 - The number of pools mined Packetcrypt will send the same Announcements to each pool mined Bandwidth usage can therefore be limited by selecting a higher difficulty pool as the primary pool and/or by mining to fewer pools.","title":"Limit Bandwidth Usage"},{"location":"mining/#block-mining-running-a-pool","text":"Because each block miner must use as much bandwidth as all of the announcement miners combined , block mining is typically done at the location of the pool. Even a pool operator who wanted to support external block mining would find that the pool itself would need enough upload bandwidth to match all of the block miners - which would be completely untenable. If you are interested in block mining, contact the pool operator and discuss sending hardware to their location. Starting your own pool requires setting up a number of services: pktd node (one or more) - One pktd instance is required for the Master to function, each of the Block Handlers may optionally use separate pktd nodes. Master (one) - This node coordinates all of the others and provides work files and configuration Ann Handler (one or more) - These are high performance nodes which accept announcements from the announcement miners in the network, they also provide announcements to the block miners. As you scale up the amount of bandwidth in the pool, you will need to add more Ann handlers. Block Miner (one or more) - These nodes download announcements from the announcement handlers and use them in the mining process to mine blocks. Block Handlers (one or more) - These nodes receive \"block shares\" from the block miners and submit blocks if Paymaker (1) - This node receives updates from the Ann Handlers and Block Handlers and keeps track of who should be paid. The Paymaker sends configuration to the pktd node which is used by the Master in order to make the pool pay out the announcement and block miners","title":"Block Mining & Running a Pool"},{"location":"mining/#packetcrypt-data-flow","text":"\u2588 Orange: Announcements are sent from the Announcement miners to the Ann Handlers and then to the Block miners \u2588 Blue: Block shares are sent from block miners to Block Handler(s) \u2588 Purple: Winning blocks are submitted by the Block Handler(s) to pktd and the PKT network \u2588 Pink: Block Handlers and Ann Handlers inform Paymaker of work done by announcement and block miners \u2588 Green: Paymaker configures pktd instance to create blocks which pay the people who have been mining \u2588 Brown: Master gets block templates from pktd instance Black dotted line: All nodes request configuration and block templates from Master node","title":"PacketCrypt Data Flow"},{"location":"mining/#more-information-and-packetcrypt-pool-code","text":"The code and documentation for running a pool is available on the C / nodejs version of the PacketCrypt project, the new Rust version only contains Announcement Miner and Announcement Handlers.","title":"More Information and PacketCrypt Pool Code"},{"location":"mining/#announcement-difficulty","text":"PacketCrypt is designed in such a way that a mining pool can double its effective power by: Doubling the total block mining computation effort Doubling the total announcement mining computation effort, or Doubling the amount of bandwidth between announcement miners and the pool The way that a pool operator limits the amount of bandwidth flowing into the pool, to prevent overloading of the network, is by setting what is known as the announcement difficulty . The announcement difficulty for a pool specifies how much work must be done on an announcement in order for the announcement to be accepted and paid out by the pool. Announcement difficulty serves to slow down the announcement miners to protect the pool's network. In general, doubling the announcement difficulty will halve the amount of bandwidth used by the pool and will also halve the pool's overall mining power, with a limit that setting the announcement difficulty lower than 2 does not bring any additional value. To explain why it works like this, we need to examine the PacketCrypt algorithm rules and the in particular how the block mining software decides which announcements to use when attempting to mine a block.","title":"Announcement Difficulty"},{"location":"mining/#announcement-set-selection","text":"PacketCrypt algorithm allows block miners to perform less work if they are able to prove that they had a certain number of \"high value\" announcements in memory at the time of mining, the exact ratio of actual work a block miner must do to the amount of work the PKT blockchain requires is called the power multipler . For a block miner seeking to optimize their power multiplier, every announcement has a particular level of utility value which is based on the amount of work that was done by the announcement miner (announcement difficulty) and how old the announcement is. We call this the effective difficulty . The effective difficulty of an announcement starts off as the actual difficulty of the work done to mine it and then decreases by half every block-period until it is less than 1 and the announcement is no longer usable for mining. The block mining software selects a subset of announcements which which will give it the best power multiplier based on the PacketCrypt algorithm: power_multiplier = min(effective_difficulty) * ann_count ** 2 The min(effective_difficulty) is the effective difficulty of the \"least valuable\" announcement that is being mined with. Lets assume that announcement miners are providing a steady supply of 1000 announcements per block-period and all announcements have an initial announcement difficulty of 128. The block mining software can choose to mine with 1000 announcements at 128 effective difficulty, or with 2000 announcements at 64 effective difficulty, or with 3000 announcements at 32 effective difficulty and so on. The best choice is to use the previous three block periods which provides a power multiplier that is 225% higher than that of using just the most recent 1 period worth of announcements. This curve is the same no matter what difficulty we are starting with.","title":"Announcement Set Selection"},{"location":"mining/#optimal-difficulty-curve","text":"Knowing that the optimal announcement set is all of those announcements mined over the past 3 block periods, we can compute the overall power of a pool as the announcement difficulty is raised. At announcement difficulty 1, announcements cannot be used for more than 1 block, but if we imagine that the announcement mining community can produce 1000 announcements per block at difficulty 1 then we can reason that the power multiplier will be 1000 ** 2 or 1 million. At difficulty 2 we can expect the announcement miners will produce 500 announcements per block period but since 2 block periods can be used, the power multiplier is the same. At difficulty 4, the announcement miners will produce 250 announcements per block period and they will be valid for 3 block periods making the power multiplier 750 ** 2 or 562,500. From here, the power output of the power multiplier of the optimal announcement set halves for each doubling of the announcement difficulty, making the optimal difficulty 2 .","title":"Optimal Difficulty Curve"},{"location":"mining/#faq-for-ann-miners","text":"","title":"FAQ for ANN Miners"},{"location":"mining/#what-does-overflow-mean","text":"When the ann handler receives an announcement, it puts it into a queue, when the queue fills up it responds overflow immediately. The queue can become long, so you may receive \"operation timed out\" you're still being paid, when you receive \"overflow\" you are not being paid. Unfortunately, you may also receive \"operation timed out\" because the handler is unresponsive, it's not obvious which is the reason from looking at the logs. For example, what you will see in the AnnMiner Logs: 1618394538 INFO annmine.rs:519 467 Ke/s 28.56Mb/s overflow: [0, 0, 3072, 0] uploading: [0, 0, 17632, 0] accept/reject: [26932/0, 0/0, 4856/0, 796/0] - goodrate: [100%, 100%, 61%, 100%] 467 Ke/s 467 kilo-encryptions (thousands of encryptions) per second of mining power. 28.56Mb/s Total upload bandwidth (to all pools - combined) overflow: [0, 0, 3072, 0] Overflowed the internal queue of the ann miner, before it was even able to upload to the pool, one number for each pool you're mining to. 3072 Number of anns which are not uploaded to pool #3. uploading [0, 0, 17632, 0] Number of anns currently in-flight in active http requests, again 3rd pool is a problem, others are doing well (in this example). accept/reject [26932/0, 0/0, 4856/0, 796/0] Anns accepted/rejected by each pool, these numbers are based on the previous 10 seconds, pool #2 is giving a zero accepted which might be an issue, keep watching the next message 10 seconds later for another update. goodrate [100%, 100%, 61%, 100%] Goodrate = number of anns accepted divided by number of anns produced.","title":"What does overflow mean?"},{"location":"mining/pool_setup_guide/","text":"Setting up a Pool \u00b6 Expectations \u00b6 General knowledge of Linux General knowledge of git General knowledge of networking General knowledge of blockchain Access to at least 6 machines running Ubuntu 18.04 LTS or 20.04 LTS , to deploy the following services. Machine 1 : PKT node Machine 2 : Master, Paymaker & Blkhander Machine 3 : AnnHandler Machine 4 : AnnHandler Machine 5 : BlkMiner Machine 6 : BlkMiner Note: It can be done all on a single machine, you just need to pay attention to ports etc. As of June 2022, the network difficulty is high, and given that half of the work is done at pool premises, it's recommended to run at least a dozen BlkMiner machines, with a significant (768GB recommended) ammount of RAM. Block mining & running a pool \u00b6 Starting your own pool requires setting up a number of services: pktd node (one or more) - One pktd instance is required for the Master to function, each of the Block Handlers may optionally use separate pktd nodes. Master (one) - This node coordinates all of the others and provides work files and configuration Ann Handler (two or more) - These are nodes which accept announcements from the announcement miners in the network, they also provide announcements to the block miners. As you scale up the amount of bandwidth in the pool, you will need to add more Ann handlers. Block Miner (two or more) - These high performance nodes download announcements from the announcement handlers and use them in the mining process to mine blocks. Block Handlers (one or more) - These nodes receive \"block shares\" from the block miners and submit blocks if they validate the share Paymaker (one) - This node receives updates from the Ann Handlers and Block Handlers and keeps track of who should be paid. The Paymaker sends configuration to the pktd node which is used by the Master in order to make the pool pay out the announcement and block miners General Information \u00b6 Repository Information: \u00b6 The following repositories hold the required programs to run a pool: Repository Tools packetcrypt_rs: https://github.com/cjdelisle/packetcrypt_rs AnnHandler, Blkminer, AnnMiner PacketCrypt: https://github.com/cjdelisle/PacketCrypt/ Master, Paymaker, BlkHandler pktd: https://github.com/pkt-cash/pktd pktd Assumed network Ranges: \u00b6 In this guide we have two separate networks, the public network (198.51.100.0/24), and local network (10.0.16.0/24) to connect AnnHandlers and BlkMiner. Machine Public Network IP Private Network IP Machine 1 198.51.100.1 10.0.16.1 Machine 2 198.51.100.2 10.0.16.2 Machine 3 198.51.100.3 10.0.16.3 Machine 4 198.51.100.4 10.0.16.4 Machine 5 X 10.0.16.5 Machine 6 X 10.0.16.6 Assumed Port Ranges: \u00b6 Service Machine Port/Port Ranges Master Machine 2 8080 Paymaker Machine 2 8081 BlkHandlers Machine 2 8100-8200 AnnHandlers Machine 3 & 4 80 Installation \u00b6 Machine 1 \u00b6 PKTD node: \u00b6 150GB of storage is required at a minimum to run the pktd node. Recommended size is around 250GB of NVMe storage. Install Golang sudo add-apt-repository ppa:longsleep/golang-backports sudo apt update sudo apt install golang-go Install git sudo apt install git Install the pktd node git clone --branch develop https://github.com/pkt-cash/pktd cd pktd ./do The output should show the following: Everything looks good - use ./bin/pktd to launch Machine 2 \u00b6 Master | Paymaker | BlkHandler: \u00b6 Install the required tools: cd ~ sudo add-apt-repository universe sudo apt install git sudo apt install make sudo apt install npm sudo npm cache clean -f sudo npm install -g n sudo n stable Restart your shell ### Add here how to get latest stable version of node Clone the source code: git clone --branch master https://github.com/cjdelisle/PacketCrypt Build the PacketCrypt code cd PacketCrypt npm install Machine 4 - 6 \u00b6 BlkMiner | AnnHandler | AnnMiner: \u00b6 Install the Required tools: sudo apt install gcc git sudo apt install curl curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh Clone packetcrypt_rs git clone --branch develop https://github.com/cjdelisle/packetcrypt_rs Compile PacketCrypt cd packetcrypt_rs ~/.cargo/bin/cargo build --release --features jemalloc Config of pool.js \u00b6 Information: pool.js is located at: ~/PacketCrypt/pool.example.js You need to edit this file, then run: cp ~/PacketCrypt/pool.example.js ~/PacketCrypt/pool.js config.privateSeed \u00b6 Signing of announcements is rarely used, it breaks people mining into multiple pools, and you should set it to null unless \"you know what you're doing\" This seed is used for deriving keys which will be used for signing announcements. Setting this value to an alphanumeric value e.g oHk8TXpbtRRZGtaYYMnIFAzYMrVh6vA8XzKWWXcKbzCThuFLIJ234bHN5peddQFzR2TtQyo58gcFRP7bKg9BeXZirSqp9gVpjBWp In general, this value should be set to the null, as signing announcements is rarely used, and breaks Announcement mining with multiple pools if you have your pool externally accessable, and should only be set if you have a strong understanding and knowledge of what you are doing. config.privateSeed = null If you aren't bothered by, or don't require your announcements to be signed . config.paymakerHttpPasswd \u00b6 Anyone who has this password can make http posts to the paymaker (claim that shares were won) You should make this random and also firewall the paymaker from the public. The upload will be done using Authorization Basic with a username of \"x\" and this as the password config.paymakerHttpPasswd = 'anyone with this password can post results to the paymaker'; You can put the paymaker behind an http proxy if you wish. config.masterUrl \u00b6 This is used by the paymaker and block handler when running them with pool.js, it is used to resolve where the master is. You can either set this as a locally host or put your master behind a nginx proxy config.masterUrl = 'http://localhost:8080'; or if you have your instance public, and you want to have it be resolvable publically, replace the url with your own. config.masterUrl = 'http://pool.pktpool.io'; config.rpc \u00b6 The username and password set here, should be the same username and password used at the end of this guide for when you configure the pktd service. user: 'x', pass: 'x', config.annHandlers \u00b6 Information: config.annHandlers is a list of json object, with an object for each individual annhandler you would like to run, each ann handler will require it's own individual port. As the AnnHandler will be run on the same machine as the BlkMiner you need to make sure there are no over-lapping port bindings. If you plan to allow external AnnMiners (AnnMiners not on your LAN to mine against your pool, the url's placed in the AnnHandlers list, should be externally resolvable. The address that is advertized for accessing this ann handler (external address) If running locally use: url: 'http://10.0.16.3:8081','http://10.0.16.4:8081' If allowing external annminers use a resolved address such as: url: 'http://ann1.pktpool.io','http://ann2.pktpool.io' Replace the url with your own. config.blkHandlers \u00b6 Information: config.blkHandlers is a list of json object, with an object for each individual annhandler you would like to run, each ann handler will require it's own individual port. BlockHandlers are low-effort high-volume single-threaded workers. What address should be advertized for accessing this BlkHander, again make sure there are no overlapping ports. If you are wanting to support external blockminers, this address should be externally resolvable url: 'http://localhost:8100', This is the port that the blkHandler will bind to. port: 8082, This is the host that the blkHandler will bind to. host: '::', This is how many requests a blkHandler can queue before the handler starts rejecting requests maxConnections: 50, root: config config.master \u00b6 Which port to run the master on port: 8080, What address to bind to, set to localhost if proxying host: '::', Minimum work for an announcement. This number is effectively a bandwidth divisor, every time you double this number you will reduce your bandwidth by a factor of two. annMinWork: Util.annWorkToTarget(128), Average number of shares per block, reducing this number will reduce load on your block handlers, but increasing it will allow payment to be spread more evenly between block miners. This wants to be set to a higher number than one, for the purpose of constantly testing that the block miners are making valid shares. You may have a block miner sitting for hours without a share and then when it wins one, it can become invalid because of misconfiguration shareWorkDivisor: 4, Which versions of announcements we will accept annVersions: [1], Request that ann miners mine announcements that are this many blocks old. Announcements contain a commitment of the most recent block hash but they need 3 blocks to \"mature\" before they can be used The point of this is so that PacketCrypt is about bandwidth, not latency. But there is a risk: If there is a surge then you are going to be starved for announcements When you are starved, you will have few usable anns which causes a slow-down in mining and the announcements which are being submitted are not usable. When you win a few blocks, those announcements become usable and you surge, which causes you to go back into starvation again. This should be set to either: 0 Which means the announcements you are receiving are used instantly 3 Which means you are waiting for the announcements to mature before using them. If running your own AnnMiners, it is advisable to set this to 0, and add the --mineold 3 to some of your AnnMiner startups on the CLI. This helps to keep a balance between keeping your pool as powerful as possible, along with having AnnMiners to help out in the case of a starvation mineOldAnns: 0, config.payMaker \u00b6 How the miners should access the paymaker (external address), replace the url with your own. url: 'pool.pktpool.io', Which port to run the paymaker on port: 8081, What address to bind to, set to localhost if proxying host: '::', Seconds between sending updates to pktd. If this set to zero, the payMaker will accept log uploads but will not send any changes of payout data to pktd. updateCycle: 120, updateCycle: 0 to disable How many seconds backward to keep history in memory historyDepth: 60 * 60 * 24 * 30, Maximum number of simultanious connections to accept before sending 500 errors maxConnections: 200, annCompressor \u00b6 Store data in 1 minute aggregations timespanMs: 1000 * 60, Allow data to be submitted to any of the last 10 aggregations slotsToKeepEvents: 10, What fraction of the payout to pay to block miners (the rest will be paid to ann miners) ( Pay per last N shares ) blockPayoutFraction: 0.5, What percent of the total winnings should be taken for pool management poolFee: 0.40, The address which should be paid the pool fee poolFeeAddress: \"pkt1qyc9dkhca7uc84zn3vlgd0h0fxr3twwn34qgeqe\", This constant will affect how far back into history we pay our announcement miners ( Pay per last N shares ) pplnsAnnConstantX: 0.125, This constant will affect how far back into history we pay our block miners ( Pay per last N shares ) pplnsBlkConstantX: 2, When there are not enough shares to fairly spread out the winnings, pay what is left over to this address. defaultAddress: \"pkt1q6hqsqhqdgqfd8t3xwgceulu7k9d9w5t2amath0qxyfjlvl3s3u4sjza2g2\", When something goes wrong, direct pktd to send all coins here, if this is different from the defaultAddress then it is possible to account for and pay out to the miners later when the problem is fixed. errorAddress: \"pkt1q6hqsqhqdgqfd8t3xwgceulu7k9d9w5t2amath0qxyfjlvl3s3u4sjza2g2\", Config of pool.toml \u00b6 Information: - pool.example.toml is located at: ~/packetcrypt_rs/pool.example.toml - You need to edit this file, then run: ~/packetcrypt_rs/pool.example.toml ~/packetcrypt_rs/pool.toml Password used by your paymaker to post logs for payment, the same as config.paymakerHttpPasswd paymaker_http_password = \"you'll want this to be a secret\" URL of the pool master, used for getting configuration and work, the same as: Replace the url with your own. master_url = \"http://pool.pktpool.io\" ann_handler.ah* \u00b6 You can have multiple ann_handlers, you can do this by defining each one such as: [ann_handler.ah0] \"parameters\" [ann_handler.ah1] \"parameters\" These can all be in a single file to be used by each annhandler, when starting the annhandlers, you would start them with on each respective machine: packetcrypt ah --config /path/to/config.toml ah0 packetcrypt ah --config /path/to/config.toml ah1 Number of threads to dedicate to the AnnHandler num_workers = 8 Length of the input queue, keeping this low will create back-pressure and prevent miners from posting too many announcements when the server is in fact overloaded input_queue_len = 256 The public url of the annhandler, this should match what is set in your pool.js Replace the url with your own. public_url = \"http://ann1.pktpool.io/submit\" Bind to this port bind_port = \"198.51.100.3:80\" Bind this port to the sprayer component bind_pvt = \"10.0.16.3:6666\" Set sprayer spray_at = [\"239.0.1.1:6667\"] spray_workers = 8 For Machine 3 you should end up with something like this [ann_handler.ah0] block_miner_passwd = \"no one steals my anns\" skip_check_chance = 0 num_workers = 8 input_queue_len = 512 public_url = \"http://ann1.pktpool.io/submit\" bind_pub = \"198.51.100.3:80\" bind_pvt = \"10.0.16.3:6666\" spray_at = [\"239.0.1.1:6667\"] spray_workers = 8 subscribe_to = [] files_to_keep = 512 The same logic should be followed for Machine 4 and other handlers you may have. NOTE: To bind low ports with non-root user run: \u00b6 sudo setcap CAP_NET_BIND_SERVICE=+eip $(which packetcrypt) Running Manually \u00b6 Machine 1 \u00b6 Information: These tasks need to be run in the order they are presented PKTD needs to have downloaded the full chain first, you will know when the node is upto date when height is equal to the current block on the explorer It can take 12+ hours to fully sync to the current block height PKTD \u00b6 --rpcuser and --rpcpass should match the values set in pool.js under config.rpc ./pktd/bin/pktd --rpcuser=XXX --rpcpass=XXX --miningaddr Machine 2 \u00b6 Master \u00b6 node ./pool.js --master Paymaker \u00b6 node ./pool.js --payMaker BlkHandler(s) \u00b6 Launch the BlkHandler nodes, specify --blk0 for the first BlkHandler , --blk1 for the second, and so forth cd PacketCrypt node ./pool.js --blk0 node ./pool.js --blk1 Machine 3 \u00b6 AnnHandler \u00b6 cd packetcrypt_rs ./target/release/packetcrypt ah --config /path/to/pool.toml ah0 Machine 4 \u00b6 AnnHandler \u00b6 cd packetcrypt_rs ./targer/release/packetcrypt ah --config /path/to/pool.toml ah1 Machine 5 and 6 \u00b6 BlkMiner \u00b6 --threads is the number of threads you want to dedicate to the Blkminer, the default is to use all available threads. --paymentaddr is the wallet you want your coins to be mined into, it is advisable to not use the electrum wallet for this. --memorysizemb is how much RAM you are allocating to block mining, Ideally you want to set as much as you can. is the masterUrl of your pool cd packetcrypt_rs ./target/release/packetcrypt blk --paymentaddr --threads 80 --memorysizemb 665000 --handlerpass NoOneStealsMyAnns --subscribe 10.0.16.3:6666 --bind 0.0.0.0:6667 --mcast 239.0.1.1 NGINX Setup (For allowing external AnnMining) \u00b6 Machine 2 \u00b6 Update system and install Nginx sudo apt update sudo apt install nginx Unlink default nginx site unlink /etc/nginx/sites-enabled/default cd /etc/nginx/sites-available Create and edit the reverse-proxy.conf file vim reverse-proxy.conf The config for the services: server { listen 80; listen [::]:80; server_name ; location / { proxy_pass http://localhost:8080/; } } server { listen 80; listen [::]:80; server_name paymaker.pktpool.io; location / { proxy_pass http://localhost:8081/; } } Link new file to sites-enabled ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/reverse-proxy.conf Remove default config rm default Check reverse proxy config is correct nginx -t Reload nginx to pick up config changes. sudo systemctl reload nginx","title":"Setting up a Pool"},{"location":"mining/pool_setup_guide/#setting-up-a-pool","text":"","title":"Setting up a Pool"},{"location":"mining/pool_setup_guide/#expectations","text":"General knowledge of Linux General knowledge of git General knowledge of networking General knowledge of blockchain Access to at least 6 machines running Ubuntu 18.04 LTS or 20.04 LTS , to deploy the following services. Machine 1 : PKT node Machine 2 : Master, Paymaker & Blkhander Machine 3 : AnnHandler Machine 4 : AnnHandler Machine 5 : BlkMiner Machine 6 : BlkMiner Note: It can be done all on a single machine, you just need to pay attention to ports etc. As of June 2022, the network difficulty is high, and given that half of the work is done at pool premises, it's recommended to run at least a dozen BlkMiner machines, with a significant (768GB recommended) ammount of RAM.","title":"Expectations"},{"location":"mining/pool_setup_guide/#block-mining-running-a-pool","text":"Starting your own pool requires setting up a number of services: pktd node (one or more) - One pktd instance is required for the Master to function, each of the Block Handlers may optionally use separate pktd nodes. Master (one) - This node coordinates all of the others and provides work files and configuration Ann Handler (two or more) - These are nodes which accept announcements from the announcement miners in the network, they also provide announcements to the block miners. As you scale up the amount of bandwidth in the pool, you will need to add more Ann handlers. Block Miner (two or more) - These high performance nodes download announcements from the announcement handlers and use them in the mining process to mine blocks. Block Handlers (one or more) - These nodes receive \"block shares\" from the block miners and submit blocks if they validate the share Paymaker (one) - This node receives updates from the Ann Handlers and Block Handlers and keeps track of who should be paid. The Paymaker sends configuration to the pktd node which is used by the Master in order to make the pool pay out the announcement and block miners","title":"Block mining & running a pool"},{"location":"mining/pool_setup_guide/#general-information","text":"","title":"General Information"},{"location":"mining/pool_setup_guide/#repository-information","text":"The following repositories hold the required programs to run a pool: Repository Tools packetcrypt_rs: https://github.com/cjdelisle/packetcrypt_rs AnnHandler, Blkminer, AnnMiner PacketCrypt: https://github.com/cjdelisle/PacketCrypt/ Master, Paymaker, BlkHandler pktd: https://github.com/pkt-cash/pktd pktd","title":"Repository Information:"},{"location":"mining/pool_setup_guide/#assumed-network-ranges","text":"In this guide we have two separate networks, the public network (198.51.100.0/24), and local network (10.0.16.0/24) to connect AnnHandlers and BlkMiner. Machine Public Network IP Private Network IP Machine 1 198.51.100.1 10.0.16.1 Machine 2 198.51.100.2 10.0.16.2 Machine 3 198.51.100.3 10.0.16.3 Machine 4 198.51.100.4 10.0.16.4 Machine 5 X 10.0.16.5 Machine 6 X 10.0.16.6","title":"Assumed network Ranges:"},{"location":"mining/pool_setup_guide/#assumed-port-ranges","text":"Service Machine Port/Port Ranges Master Machine 2 8080 Paymaker Machine 2 8081 BlkHandlers Machine 2 8100-8200 AnnHandlers Machine 3 & 4 80","title":"Assumed Port Ranges:"},{"location":"mining/pool_setup_guide/#installation","text":"","title":"Installation"},{"location":"mining/pool_setup_guide/#machine-1","text":"","title":"Machine 1"},{"location":"mining/pool_setup_guide/#pktd-node","text":"150GB of storage is required at a minimum to run the pktd node. Recommended size is around 250GB of NVMe storage. Install Golang sudo add-apt-repository ppa:longsleep/golang-backports sudo apt update sudo apt install golang-go Install git sudo apt install git Install the pktd node git clone --branch develop https://github.com/pkt-cash/pktd cd pktd ./do The output should show the following: Everything looks good - use ./bin/pktd to launch","title":"PKTD node:"},{"location":"mining/pool_setup_guide/#machine-2","text":"","title":"Machine 2"},{"location":"mining/pool_setup_guide/#master-paymaker-blkhandler","text":"Install the required tools: cd ~ sudo add-apt-repository universe sudo apt install git sudo apt install make sudo apt install npm sudo npm cache clean -f sudo npm install -g n sudo n stable Restart your shell ### Add here how to get latest stable version of node Clone the source code: git clone --branch master https://github.com/cjdelisle/PacketCrypt Build the PacketCrypt code cd PacketCrypt npm install","title":"Master | Paymaker | BlkHandler:"},{"location":"mining/pool_setup_guide/#machine-4-6","text":"","title":"Machine 4 - 6"},{"location":"mining/pool_setup_guide/#blkminer-annhandler-annminer","text":"Install the Required tools: sudo apt install gcc git sudo apt install curl curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh Clone packetcrypt_rs git clone --branch develop https://github.com/cjdelisle/packetcrypt_rs Compile PacketCrypt cd packetcrypt_rs ~/.cargo/bin/cargo build --release --features jemalloc","title":"BlkMiner | AnnHandler | AnnMiner:"},{"location":"mining/pool_setup_guide/#config-of-pooljs","text":"Information: pool.js is located at: ~/PacketCrypt/pool.example.js You need to edit this file, then run: cp ~/PacketCrypt/pool.example.js ~/PacketCrypt/pool.js","title":"Config of pool.js"},{"location":"mining/pool_setup_guide/#configprivateseed","text":"Signing of announcements is rarely used, it breaks people mining into multiple pools, and you should set it to null unless \"you know what you're doing\" This seed is used for deriving keys which will be used for signing announcements. Setting this value to an alphanumeric value e.g oHk8TXpbtRRZGtaYYMnIFAzYMrVh6vA8XzKWWXcKbzCThuFLIJ234bHN5peddQFzR2TtQyo58gcFRP7bKg9BeXZirSqp9gVpjBWp In general, this value should be set to the null, as signing announcements is rarely used, and breaks Announcement mining with multiple pools if you have your pool externally accessable, and should only be set if you have a strong understanding and knowledge of what you are doing. config.privateSeed = null If you aren't bothered by, or don't require your announcements to be signed .","title":"config.privateSeed"},{"location":"mining/pool_setup_guide/#configpaymakerhttppasswd","text":"Anyone who has this password can make http posts to the paymaker (claim that shares were won) You should make this random and also firewall the paymaker from the public. The upload will be done using Authorization Basic with a username of \"x\" and this as the password config.paymakerHttpPasswd = 'anyone with this password can post results to the paymaker'; You can put the paymaker behind an http proxy if you wish.","title":"config.paymakerHttpPasswd"},{"location":"mining/pool_setup_guide/#configmasterurl","text":"This is used by the paymaker and block handler when running them with pool.js, it is used to resolve where the master is. You can either set this as a locally host or put your master behind a nginx proxy config.masterUrl = 'http://localhost:8080'; or if you have your instance public, and you want to have it be resolvable publically, replace the url with your own. config.masterUrl = 'http://pool.pktpool.io';","title":"config.masterUrl"},{"location":"mining/pool_setup_guide/#configrpc","text":"The username and password set here, should be the same username and password used at the end of this guide for when you configure the pktd service. user: 'x', pass: 'x',","title":"config.rpc"},{"location":"mining/pool_setup_guide/#configannhandlers","text":"Information: config.annHandlers is a list of json object, with an object for each individual annhandler you would like to run, each ann handler will require it's own individual port. As the AnnHandler will be run on the same machine as the BlkMiner you need to make sure there are no over-lapping port bindings. If you plan to allow external AnnMiners (AnnMiners not on your LAN to mine against your pool, the url's placed in the AnnHandlers list, should be externally resolvable. The address that is advertized for accessing this ann handler (external address) If running locally use: url: 'http://10.0.16.3:8081','http://10.0.16.4:8081' If allowing external annminers use a resolved address such as: url: 'http://ann1.pktpool.io','http://ann2.pktpool.io' Replace the url with your own.","title":"config.annHandlers"},{"location":"mining/pool_setup_guide/#configblkhandlers","text":"Information: config.blkHandlers is a list of json object, with an object for each individual annhandler you would like to run, each ann handler will require it's own individual port. BlockHandlers are low-effort high-volume single-threaded workers. What address should be advertized for accessing this BlkHander, again make sure there are no overlapping ports. If you are wanting to support external blockminers, this address should be externally resolvable url: 'http://localhost:8100', This is the port that the blkHandler will bind to. port: 8082, This is the host that the blkHandler will bind to. host: '::', This is how many requests a blkHandler can queue before the handler starts rejecting requests maxConnections: 50, root: config","title":"config.blkHandlers"},{"location":"mining/pool_setup_guide/#configmaster","text":"Which port to run the master on port: 8080, What address to bind to, set to localhost if proxying host: '::', Minimum work for an announcement. This number is effectively a bandwidth divisor, every time you double this number you will reduce your bandwidth by a factor of two. annMinWork: Util.annWorkToTarget(128), Average number of shares per block, reducing this number will reduce load on your block handlers, but increasing it will allow payment to be spread more evenly between block miners. This wants to be set to a higher number than one, for the purpose of constantly testing that the block miners are making valid shares. You may have a block miner sitting for hours without a share and then when it wins one, it can become invalid because of misconfiguration shareWorkDivisor: 4, Which versions of announcements we will accept annVersions: [1], Request that ann miners mine announcements that are this many blocks old. Announcements contain a commitment of the most recent block hash but they need 3 blocks to \"mature\" before they can be used The point of this is so that PacketCrypt is about bandwidth, not latency. But there is a risk: If there is a surge then you are going to be starved for announcements When you are starved, you will have few usable anns which causes a slow-down in mining and the announcements which are being submitted are not usable. When you win a few blocks, those announcements become usable and you surge, which causes you to go back into starvation again. This should be set to either: 0 Which means the announcements you are receiving are used instantly 3 Which means you are waiting for the announcements to mature before using them. If running your own AnnMiners, it is advisable to set this to 0, and add the --mineold 3 to some of your AnnMiner startups on the CLI. This helps to keep a balance between keeping your pool as powerful as possible, along with having AnnMiners to help out in the case of a starvation mineOldAnns: 0,","title":"config.master"},{"location":"mining/pool_setup_guide/#configpaymaker","text":"How the miners should access the paymaker (external address), replace the url with your own. url: 'pool.pktpool.io', Which port to run the paymaker on port: 8081, What address to bind to, set to localhost if proxying host: '::', Seconds between sending updates to pktd. If this set to zero, the payMaker will accept log uploads but will not send any changes of payout data to pktd. updateCycle: 120, updateCycle: 0 to disable How many seconds backward to keep history in memory historyDepth: 60 * 60 * 24 * 30, Maximum number of simultanious connections to accept before sending 500 errors maxConnections: 200,","title":"config.payMaker"},{"location":"mining/pool_setup_guide/#anncompressor","text":"Store data in 1 minute aggregations timespanMs: 1000 * 60, Allow data to be submitted to any of the last 10 aggregations slotsToKeepEvents: 10, What fraction of the payout to pay to block miners (the rest will be paid to ann miners) ( Pay per last N shares ) blockPayoutFraction: 0.5, What percent of the total winnings should be taken for pool management poolFee: 0.40, The address which should be paid the pool fee poolFeeAddress: \"pkt1qyc9dkhca7uc84zn3vlgd0h0fxr3twwn34qgeqe\", This constant will affect how far back into history we pay our announcement miners ( Pay per last N shares ) pplnsAnnConstantX: 0.125, This constant will affect how far back into history we pay our block miners ( Pay per last N shares ) pplnsBlkConstantX: 2, When there are not enough shares to fairly spread out the winnings, pay what is left over to this address. defaultAddress: \"pkt1q6hqsqhqdgqfd8t3xwgceulu7k9d9w5t2amath0qxyfjlvl3s3u4sjza2g2\", When something goes wrong, direct pktd to send all coins here, if this is different from the defaultAddress then it is possible to account for and pay out to the miners later when the problem is fixed. errorAddress: \"pkt1q6hqsqhqdgqfd8t3xwgceulu7k9d9w5t2amath0qxyfjlvl3s3u4sjza2g2\",","title":"annCompressor"},{"location":"mining/pool_setup_guide/#config-of-pooltoml","text":"Information: - pool.example.toml is located at: ~/packetcrypt_rs/pool.example.toml - You need to edit this file, then run: ~/packetcrypt_rs/pool.example.toml ~/packetcrypt_rs/pool.toml Password used by your paymaker to post logs for payment, the same as config.paymakerHttpPasswd paymaker_http_password = \"you'll want this to be a secret\" URL of the pool master, used for getting configuration and work, the same as: Replace the url with your own. master_url = \"http://pool.pktpool.io\"","title":"Config of pool.toml"},{"location":"mining/pool_setup_guide/#ann_handlerah","text":"You can have multiple ann_handlers, you can do this by defining each one such as: [ann_handler.ah0] \"parameters\" [ann_handler.ah1] \"parameters\" These can all be in a single file to be used by each annhandler, when starting the annhandlers, you would start them with on each respective machine: packetcrypt ah --config /path/to/config.toml ah0 packetcrypt ah --config /path/to/config.toml ah1 Number of threads to dedicate to the AnnHandler num_workers = 8 Length of the input queue, keeping this low will create back-pressure and prevent miners from posting too many announcements when the server is in fact overloaded input_queue_len = 256 The public url of the annhandler, this should match what is set in your pool.js Replace the url with your own. public_url = \"http://ann1.pktpool.io/submit\" Bind to this port bind_port = \"198.51.100.3:80\" Bind this port to the sprayer component bind_pvt = \"10.0.16.3:6666\" Set sprayer spray_at = [\"239.0.1.1:6667\"] spray_workers = 8 For Machine 3 you should end up with something like this [ann_handler.ah0] block_miner_passwd = \"no one steals my anns\" skip_check_chance = 0 num_workers = 8 input_queue_len = 512 public_url = \"http://ann1.pktpool.io/submit\" bind_pub = \"198.51.100.3:80\" bind_pvt = \"10.0.16.3:6666\" spray_at = [\"239.0.1.1:6667\"] spray_workers = 8 subscribe_to = [] files_to_keep = 512 The same logic should be followed for Machine 4 and other handlers you may have.","title":"ann_handler.ah*"},{"location":"mining/pool_setup_guide/#note-to-bind-low-ports-with-non-root-user-run","text":"sudo setcap CAP_NET_BIND_SERVICE=+eip $(which packetcrypt)","title":"NOTE: To bind low ports with non-root user run:"},{"location":"mining/pool_setup_guide/#running-manually","text":"","title":"Running Manually"},{"location":"mining/pool_setup_guide/#machine-1_1","text":"Information: These tasks need to be run in the order they are presented PKTD needs to have downloaded the full chain first, you will know when the node is upto date when height is equal to the current block on the explorer It can take 12+ hours to fully sync to the current block height","title":"Machine 1"},{"location":"mining/pool_setup_guide/#pktd","text":"--rpcuser and --rpcpass should match the values set in pool.js under config.rpc ./pktd/bin/pktd --rpcuser=XXX --rpcpass=XXX --miningaddr ","title":"PKTD"},{"location":"mining/pool_setup_guide/#machine-2_1","text":"","title":"Machine 2"},{"location":"mining/pool_setup_guide/#master","text":"node ./pool.js --master","title":"Master"},{"location":"mining/pool_setup_guide/#paymaker","text":"node ./pool.js --payMaker","title":"Paymaker"},{"location":"mining/pool_setup_guide/#blkhandlers","text":"Launch the BlkHandler nodes, specify --blk0 for the first BlkHandler , --blk1 for the second, and so forth cd PacketCrypt node ./pool.js --blk0 node ./pool.js --blk1","title":"BlkHandler(s)"},{"location":"mining/pool_setup_guide/#machine-3","text":"","title":"Machine 3"},{"location":"mining/pool_setup_guide/#annhandler","text":"cd packetcrypt_rs ./target/release/packetcrypt ah --config /path/to/pool.toml ah0","title":"AnnHandler"},{"location":"mining/pool_setup_guide/#machine-4","text":"","title":"Machine 4"},{"location":"mining/pool_setup_guide/#annhandler_1","text":"cd packetcrypt_rs ./targer/release/packetcrypt ah --config /path/to/pool.toml ah1","title":"AnnHandler"},{"location":"mining/pool_setup_guide/#machine-5-and-6","text":"","title":"Machine 5 and 6"},{"location":"mining/pool_setup_guide/#blkminer","text":"--threads is the number of threads you want to dedicate to the Blkminer, the default is to use all available threads. --paymentaddr is the wallet you want your coins to be mined into, it is advisable to not use the electrum wallet for this. --memorysizemb is how much RAM you are allocating to block mining, Ideally you want to set as much as you can. is the masterUrl of your pool cd packetcrypt_rs ./target/release/packetcrypt blk --paymentaddr --threads 80 --memorysizemb 665000 --handlerpass NoOneStealsMyAnns --subscribe 10.0.16.3:6666 --bind 0.0.0.0:6667 --mcast 239.0.1.1","title":"BlkMiner"},{"location":"mining/pool_setup_guide/#nginx-setup-for-allowing-external-annmining","text":"","title":"NGINX Setup (For allowing external AnnMining)"},{"location":"mining/pool_setup_guide/#machine-2_2","text":"Update system and install Nginx sudo apt update sudo apt install nginx Unlink default nginx site unlink /etc/nginx/sites-enabled/default cd /etc/nginx/sites-available Create and edit the reverse-proxy.conf file vim reverse-proxy.conf The config for the services: server { listen 80; listen [::]:80; server_name ; location / { proxy_pass http://localhost:8080/; } } server { listen 80; listen [::]:80; server_name paymaker.pktpool.io; location / { proxy_pass http://localhost:8081/; } } Link new file to sites-enabled ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/reverse-proxy.conf Remove default config rm default Check reverse proxy config is correct nginx -t Reload nginx to pick up config changes. sudo systemctl reload nginx","title":"Machine 2"},{"location":"pktd/","text":"Pktd \u00b6 Pktd is the PKT full node blockchain software. It is a fork of btcd, the golang bitcoin instance. Running a full node \u00b6 If you want to run a full node in the PKT network, you can do so by downloading pktd and compiling it on a Linux or Mac server. Follow the process in Installation and the simply type ./bin/pktd and it will start up and begin syncing the chain and helping verify the PKT network. NOTE : Running a full node requires over 40 GB of disk space to store the blockchain and is not necessary for participating in the project. If you just want to make a wallet, see PKT Electrum (gui) or PKTWallet (command line) wallets. Installation \u00b6 Install golang \u00b6 First, you need to install the go programming language, go to the golang website and learn how to install it on your system: https://golang.org/doc/install Install git \u00b6 Next you will need to make sure you have git installed. The first thing to do is check whether you have it installed already: git version If it prints something like git version 2.21.1 you\u2019re in luck and you can continue. If it prints something more like command not found: git then you\u2019ll need to install it. Installation will depend on your system, for debian/ubuntu like systems you will want sudo apt install git and for OSX with homebrew, you\u2019ll want brew install git . Install the components \u00b6 Once you have golang and git fully installed and set up, you can use the following commands to install pktd, pktwallet and pktctl. git clone https://github.com/pkt-cash/pktd cd pktd ./do If you see something like: Everything looks good at the end of typing ./do then you should be ready to start using pktd.","title":"Pktd"},{"location":"pktd/#pktd","text":"Pktd is the PKT full node blockchain software. It is a fork of btcd, the golang bitcoin instance.","title":"Pktd"},{"location":"pktd/#running-a-full-node","text":"If you want to run a full node in the PKT network, you can do so by downloading pktd and compiling it on a Linux or Mac server. Follow the process in Installation and the simply type ./bin/pktd and it will start up and begin syncing the chain and helping verify the PKT network. NOTE : Running a full node requires over 40 GB of disk space to store the blockchain and is not necessary for participating in the project. If you just want to make a wallet, see PKT Electrum (gui) or PKTWallet (command line) wallets.","title":"Running a full node"},{"location":"pktd/#installation","text":"","title":"Installation"},{"location":"pktd/#install-golang","text":"First, you need to install the go programming language, go to the golang website and learn how to install it on your system: https://golang.org/doc/install","title":"Install golang"},{"location":"pktd/#install-git","text":"Next you will need to make sure you have git installed. The first thing to do is check whether you have it installed already: git version If it prints something like git version 2.21.1 you\u2019re in luck and you can continue. If it prints something more like command not found: git then you\u2019ll need to install it. Installation will depend on your system, for debian/ubuntu like systems you will want sudo apt install git and for OSX with homebrew, you\u2019ll want brew install git .","title":"Install git"},{"location":"pktd/#install-the-components","text":"Once you have golang and git fully installed and set up, you can use the following commands to install pktd, pktwallet and pktctl. git clone https://github.com/pkt-cash/pktd cd pktd ./do If you see something like: Everything looks good at the end of typing ./do then you should be ready to start using pktd.","title":"Install the components"},{"location":"pktd/migrating_from_electrum/","text":"Migrating from Electrum to PKTWallet \u00b6 If you have an electrum based wallet which becomes overloaded from too many transactions (e.g. from mining directly into it), then you will need to migrate your keys to a pktwallet instance. Step 1: Setup pktwallet \u00b6 Follow the instructions in pktwallet to get your wallet up and running Step 2: Export your keys \u00b6 In Electrum, click Wallet -> Private Keys -> Export You will be prompted to enter your Electrum wallet password, then a window should appear showing your keys KEEP THESE KEYS SECRET Find an address which you want to migrate and copy the key with that address Do not copy the part which says p2wpkh: , just the letters after it The key will look sometihng like this: ci2TBp2HTWtyMQtizWMuugHxG6lNpInA1bSpLIWzjJS2AI8ObwV5 Step 3: Import key to pktwallet \u00b6 In a terminal window, run pktctl --wallet getbalance to verify that your wallet is working Unlock your wallet using pktctl --wallet walletpassphrase 1000000 Type pktctl --wallet importprivkey You should see the address printed on the screen Importing more keys \u00b6 When you import a key, it starts a rescan of the chain automatically, in order to import more you need to stop pktctl --wallet stopresync to stop Speed things up \u00b6 If you know exactly when an address was paid, you can speed up the import by only rescanning blocks where it might have been paid. For example if you are sure that the address was not paid earlier than block number 600000 you can do the following: pktctl --wallet stopresync pktctl --wallet resync 600000 100000000 Check that it's working \u00b6 It's recommended that you run pktwallet with -d debug flag in order to be able to see the debug logs. When you are resyncing you should see log lines like the following: 1609188780 [DBG] wallet.go:2817 Rescan cycle [620100] 1609188781 [DBG] wallet.go:2817 Rescan cycle [620200] 1609188782 [DBG] wallet.go:2817 Rescan cycle [620300] 1609188783 [DBG] wallet.go:2817 Rescan cycle [620400] The number if the block number which is being scanned. Troubleshooting \u00b6 ErrBirthdayBlockNotSet: birthday block not set Your wallet is not synced yet, wait for it to become synced","title":"Migrating from Electrum to PKTWallet"},{"location":"pktd/migrating_from_electrum/#migrating-from-electrum-to-pktwallet","text":"If you have an electrum based wallet which becomes overloaded from too many transactions (e.g. from mining directly into it), then you will need to migrate your keys to a pktwallet instance.","title":"Migrating from Electrum to PKTWallet"},{"location":"pktd/migrating_from_electrum/#step-1-setup-pktwallet","text":"Follow the instructions in pktwallet to get your wallet up and running","title":"Step 1: Setup pktwallet"},{"location":"pktd/migrating_from_electrum/#step-2-export-your-keys","text":"In Electrum, click Wallet -> Private Keys -> Export You will be prompted to enter your Electrum wallet password, then a window should appear showing your keys KEEP THESE KEYS SECRET Find an address which you want to migrate and copy the key with that address Do not copy the part which says p2wpkh: , just the letters after it The key will look sometihng like this: ci2TBp2HTWtyMQtizWMuugHxG6lNpInA1bSpLIWzjJS2AI8ObwV5","title":"Step 2: Export your keys"},{"location":"pktd/migrating_from_electrum/#step-3-import-key-to-pktwallet","text":"In a terminal window, run pktctl --wallet getbalance to verify that your wallet is working Unlock your wallet using pktctl --wallet walletpassphrase 1000000 Type pktctl --wallet importprivkey You should see the address printed on the screen","title":"Step 3: Import key to pktwallet"},{"location":"pktd/migrating_from_electrum/#importing-more-keys","text":"When you import a key, it starts a rescan of the chain automatically, in order to import more you need to stop pktctl --wallet stopresync to stop","title":"Importing more keys"},{"location":"pktd/migrating_from_electrum/#speed-things-up","text":"If you know exactly when an address was paid, you can speed up the import by only rescanning blocks where it might have been paid. For example if you are sure that the address was not paid earlier than block number 600000 you can do the following: pktctl --wallet stopresync pktctl --wallet resync 600000 100000000","title":"Speed things up"},{"location":"pktd/migrating_from_electrum/#check-that-its-working","text":"It's recommended that you run pktwallet with -d debug flag in order to be able to see the debug logs. When you are resyncing you should see log lines like the following: 1609188780 [DBG] wallet.go:2817 Rescan cycle [620100] 1609188781 [DBG] wallet.go:2817 Rescan cycle [620200] 1609188782 [DBG] wallet.go:2817 Rescan cycle [620300] 1609188783 [DBG] wallet.go:2817 Rescan cycle [620400] The number if the block number which is being scanned.","title":"Check that it's working"},{"location":"pktd/migrating_from_electrum/#troubleshooting","text":"ErrBirthdayBlockNotSet: birthday block not set Your wallet is not synced yet, wait for it to become synced","title":"Troubleshooting"},{"location":"pktd/pktwallet/","text":"pktwallet \u00b6 The command line PKT wallet First Time Installation and Launching \u00b6 Download pktd \u00b6 Microsoft Windows \u00b6 Download the most recent zip archive suffixed with -windows.zip available from pktd releases page For example: pktd-v1.4.0-windows.zip Unarchive the content of the zip file Open the command prompt and navigate to the bin directory in the extracted archive For Example: cd Downloads\\pktd*\\bin Follow the instructions below but In place of ./bin/pktwallet , use pktwallet.exe In place of ./bin/pktctl , use pktctl.exe MacOS and Linux \u00b6 Download one of the most recent packages available for Linux or MacOS from pktd releases page For example, for pktd-v1.4.0 release: For MacOS , after having downloaded pktd-v1.4.0-macos.pkg , install pktwallet and other utilities by clicking on the package icon in the Finder. For Linux , after having downloaded one of the following packages: pktd-v1.4.0-linux.deb (Debian or Ubuntu) pktd-v1.4.0-linux.rpm (Fedora or RedHat) pktd AUR package (Arch linux or Manjaro), install pktwallet and other utilities by clicking on the appropriate package icon or running an installation command Creating a New Wallet \u00b6 To create a new PKT wallet, use the pktwallet --create command: ./bin/pktwallet --create You will be prompted to follow a few steps. Make sure you write your seed words on paper so that you can recover your funds even if your computer is damaged. Do not skip this step. You will thank yourself later. Keep it secret. Keep it safe. Launching pktwallet \u00b6 After creating your wallet, you can launch pktwallet with: ./bin/pktwallet Watch the output from the logs and when you see a log line like this: 1608294386 [INF] headerlogger.go:64 Processed 1 block in the last 24.82s (height 702781, 2020-12-18 13:26:01 +0100 CET) Compare the height number in the log line (e.g. 702781) to the number in the pkt block explorer to see when your wallet is up to date. A complete sync from a new installation can take 12+ hours. During this time, the balance in your wallet will not be accurate and you will be unable to transact. You may, however, proceed with creating an address while syncing, as detailed below. Creating a New PKT Address \u00b6 While pktwallet is running in the background (or in another terminal), use the following command: ./bin/pktctl --wallet getnewaddress You should see a series of numbers and letters beginning with pkt1 . This is your newly created PKT address which you can use for receiving coins. If you need to view it after creation, the address, along with the balance, can be seen in the output from running: ./bin/pktctl --wallet getaddressbalances 1 1 NOTE : Every time you use getnewaddress , the address you receive must be remembered by pktwallet forever. So, only use it when you actually need an address. How to install the PKT World Wallet (Windows only) \u00b6 Download the PKT World Wallet Follow the installation instructions Launch wallet Create a new wallet Enter a wallet passphrase. Make sure to save your passphrase in a safe place. Write down your wallet seed. It is very important to keep your seed in a safe place To generate a new PKT address, click Wallet. Generate new address To begin mining using the PKT World Wallet, click Miner Start Mining How to install a CLI Wallet \u00b6 If you already have a wallet created on your computer called wallet.db you will need to create a new wallet by following these steps: Download pktd-v1.5.1-macos.pkg Run the installation Open Terminal Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktwallet --create --wallet xxxx xxxx is the name of the wallet i.e. wallet personal Make sure to write this down for your notes Enter passphrase or leave empty Make sure to write this down for you notes Do NOT add additional layer of security Copy down your seed. If your wallet is destroyed, you can recover it as long as you have this seed and your wallet passphrase. Please keep in mind that anyone who has access to the seed only needs to guess your wallet passphrase to access your funds. Follow the instructions to finalize wallet How to start up CLI Wallet \u00b6 Open terminal Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktwallet --wallet (whatever you named your wallet) i.e wallet personal How to create new PKT wallet address \u00b6 Make sure you have the CLI wallet running in a separate terminal window Open Terminal Enter command: $ cd pktd Enter command: $ ~/pktd/bin/pktctl --wallet getnewaddress Save your address in a safe place that is easily accessible How to send PKT from your CLI wallet \u00b6 Make sure you have the CLI wallet running in a separate terminal window Command click on file to open Open terminal Enter command: $ cd pktd Enter Command: $ ~/pktd/pktd/bin/pktctl --wallet sendfrom pkt1xxxxx $$$$ '[\"pkt1xxxxx\"]' xxxxx = PKT address you want to send from and to $$$$ = amount of pkt you want to send How to install a CLI Wallet from Seed \u00b6 If you already have a wallet created on your computer called wallet.db you will need to create a new wallet by following these steps: Download pktd-v1.5.1-macos.pkg Command click on file to open Run the installation Open Terminal Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktwallet --create --wallet xxxx xxxx is the name of the wallet i.e. wallet personal Make sure to write this down for your notes Enter passphrase or leave empty Make sure to write this down for you notes Do NOT add additional layer of security Enter seed Start up wallet (see instructions above) Open new terminal window Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktctl --wallet getnewaddress repeat until you find receive (each of) your recovered wallet address(es) Enter the command: $ ~/pktd/bin/pktctl --wallet resync This will resync the wallet to the blockchain (takes at least 24 hours) Enter the command: $ ~/pktd/bin/pktctl --wallet getaddressbalances 1 1 this is how you view all your (sub)wallet balances Using Your Wallet \u00b6 pktctl is the program that interfaces with a running pktwallet instance. pktctl functions will not work if pktwallet is not running and accessible. Some functions will be limited until pktwallet is fully synchronized. Some functions require the wallet being unlocked before executing. Getting Your Balance \u00b6 You can check your current PKT balance using pktctl or you can check the balances of each of your addresses if you have more than one. ./bin/pktctl --wallet getbalance or: ./bin/pktctl --wallet getaddressbalances getaddressbalances by itself will not show 0 balance addresses you may have created. To show these addresses, use: ./bin/pktctl --wallet getaddressbalances 1 1 For more explanation of the meaning of the output of getaddressbalances , use: ./bin/pktctl --wallet help getaddressbalances Unlocking Wallet \u00b6 While many functions can be performed while the wallet is locked, other functions first require the wallet to be unlocked, including sending PKT and folding. The passphrase used to unlock the wallet was set when creating the wallet. To unlock your wallet for 120 seconds (this can be changed to your liking), use: ./bin/pktctl --wallet walletpassphrase 120 To keep your wallet unlocked, use: ./bin/pktctl --wallet walletpassphrase 0 If using 0 as in the previous example to keep your wallet indefinitely unlocked, it will stay unlocked until you either restart pktwallet or run: ./bin/pktctl --wallet walletlock NOTE: Special characters (e.g., !, #, & *) in your passphrase may be incorrectly interpreted by your shell. You may need to wrap your passphrase in quotes. ./bin/pktctl --wallet walletpassphrase 'suP3r_S3cReT^P@s5W0Rd!' 120 Sending PKT \u00b6 You can send PKT using the sendtoaddress command, but first you must unlock your wallet for sending, as shown in the previous step. To send cjd a 10 PKT tip: ./bin/pktctl --wallet sendtoaddress pkt1qt8xe7dwpelngtcpsgn5nkj3pwwdm7gf3l4auax 10 Sending PKT from Specific Address \u00b6 pktwallet gives you control over which addresses are used for making a payment. This means you can keep different PKT in your wallet separate, for example separating business transactions from personal transactions. NOTE : PKT is not a \"privacy coin\", so transactions are still shown in the blockchain like with Bitcoin. Unlock wallet: ./bin/pktctl --wallet walletpassphrase 60 Send 10 PKT to \"their address\" from \"your address\": ./bin/pktctl --wallet sendfrom 10 '[\"\"]' Notice the '[\" . This is because the last argument is actually a quoted JSON array . This means you can use multiple addresses as the source of a payment. For example: ./bin/pktctl --wallet sendfrom 10 '[\"\", \"\"]' Windows users require unique formatting for command prompt: pktctl.exe --wallet sendfrom 10 [\\\"\\\"] Sweeping an Address \u00b6 With pktwallet, sending 0 PKT has special significance in that it will send \"as much PKT as possible\". To sweep address into , you can use the following command: ./bin/pktctl --wallet sendfrom 0 '[\"\"]' Windows: pktctl.exe --wallet sendfrom 0 [\\\"\\\"] NOTE : Sweeping an address will send as much PKT as possible , which is not necessarily all PKT in that address. You may need to sweep multiple times before the address is empty. Folding Coins \u00b6 If you are the recipient of many transactions, such as is the case in mining, you may not be able to spend all of them at once. This is similar to someone who is paid in pennies having a difficult time using the pennies to buy a car. To solve this issue, you can consolidate all of the coins which were paid to you by folding . Folding is sweeping an address to itself . Just like in sweeping, you may need to run the command many times before you have completely folded. See FAQs for more detail. For example: ./bin/pktctl --wallet sendfrom
    0 '[\"
    \"]' Windows: pktctl.exe --wallet sendfrom
    0 [\\\"
    \\\"] Alternative GUI Wallets \u00b6 Electrum for PKT (Windows, MacOS, Linux) NOTE: Electrum is not appropriate for mining. Do NOT mine into an electrum wallet! PKT World Wallet (Windows) Zulu Wallet (MacOS) FAQs \u00b6 I have several machines mining, do I need the wallet running on each machine? \u00b6 NO! In fact, the wallet doesn't need to be running at all to mine, but you do need to ensure you have control of the address you are mining to. Should I leave pktwallet running? \u00b6 It is not a requirement to have pktwallet running to mine. However, if you leave it running, it will stay synced. This will save time when performing pktctl functions, such as folding and sending coins. If pktwallet has not been running for some time, it will need time to sync up to the current block from the time it last ran. As a safety precaution, don't forget to lock your wallet if you do keep it running. How often should I fold and why? \u00b6 The purpose of folding is to turn all your small payments (such as from mining) into quickly and easily spendable coins. If you are multi-pool mining and have rewards in every block, you will have roughly 1440 unconsolidated transactions per day - one for each block at a rate of ~ 1 block/min. If you do not fold these transactions, after awhile you'll have a huge amount of transactions to process if you wish to send the sum or portion thereof of these smaller transactions. So, while folding isn't required and will have no impact on mining if you do or do not, you're doing yourself a favor later by keeping the transactions as consolidated as possible. It is typical to fold as much as possible every day or every few days when you think about it, depending on your use case. It can also be scripted. Note that folding is a transaction itself. Depending on how much you have to fold, you may need to run the command many times. You also may need to wait for coins to confirm before folding more. Once the folding command fails or you see a very low number in the outputcount field from running ./bin/pktctl --wallet getaddressbalances 1 1 or on PKT block explorer under Unconsolidated Txns, you have successfully folded the best you can for that point in time.","title":"pktwallet"},{"location":"pktd/pktwallet/#pktwallet","text":"The command line PKT wallet","title":"pktwallet"},{"location":"pktd/pktwallet/#first-time-installation-and-launching","text":"","title":"First Time Installation and Launching"},{"location":"pktd/pktwallet/#download-pktd","text":"","title":"Download pktd"},{"location":"pktd/pktwallet/#microsoft-windows","text":"Download the most recent zip archive suffixed with -windows.zip available from pktd releases page For example: pktd-v1.4.0-windows.zip Unarchive the content of the zip file Open the command prompt and navigate to the bin directory in the extracted archive For Example: cd Downloads\\pktd*\\bin Follow the instructions below but In place of ./bin/pktwallet , use pktwallet.exe In place of ./bin/pktctl , use pktctl.exe","title":"Microsoft Windows"},{"location":"pktd/pktwallet/#macos-and-linux","text":"Download one of the most recent packages available for Linux or MacOS from pktd releases page For example, for pktd-v1.4.0 release: For MacOS , after having downloaded pktd-v1.4.0-macos.pkg , install pktwallet and other utilities by clicking on the package icon in the Finder. For Linux , after having downloaded one of the following packages: pktd-v1.4.0-linux.deb (Debian or Ubuntu) pktd-v1.4.0-linux.rpm (Fedora or RedHat) pktd AUR package (Arch linux or Manjaro), install pktwallet and other utilities by clicking on the appropriate package icon or running an installation command","title":"MacOS and Linux"},{"location":"pktd/pktwallet/#creating-a-new-wallet","text":"To create a new PKT wallet, use the pktwallet --create command: ./bin/pktwallet --create You will be prompted to follow a few steps. Make sure you write your seed words on paper so that you can recover your funds even if your computer is damaged. Do not skip this step. You will thank yourself later. Keep it secret. Keep it safe.","title":"Creating a New Wallet"},{"location":"pktd/pktwallet/#launching-pktwallet","text":"After creating your wallet, you can launch pktwallet with: ./bin/pktwallet Watch the output from the logs and when you see a log line like this: 1608294386 [INF] headerlogger.go:64 Processed 1 block in the last 24.82s (height 702781, 2020-12-18 13:26:01 +0100 CET) Compare the height number in the log line (e.g. 702781) to the number in the pkt block explorer to see when your wallet is up to date. A complete sync from a new installation can take 12+ hours. During this time, the balance in your wallet will not be accurate and you will be unable to transact. You may, however, proceed with creating an address while syncing, as detailed below.","title":"Launching pktwallet"},{"location":"pktd/pktwallet/#creating-a-new-pkt-address","text":"While pktwallet is running in the background (or in another terminal), use the following command: ./bin/pktctl --wallet getnewaddress You should see a series of numbers and letters beginning with pkt1 . This is your newly created PKT address which you can use for receiving coins. If you need to view it after creation, the address, along with the balance, can be seen in the output from running: ./bin/pktctl --wallet getaddressbalances 1 1 NOTE : Every time you use getnewaddress , the address you receive must be remembered by pktwallet forever. So, only use it when you actually need an address.","title":"Creating a New PKT Address"},{"location":"pktd/pktwallet/#how-to-install-the-pkt-world-wallet-windows-only","text":"Download the PKT World Wallet Follow the installation instructions Launch wallet Create a new wallet Enter a wallet passphrase. Make sure to save your passphrase in a safe place. Write down your wallet seed. It is very important to keep your seed in a safe place To generate a new PKT address, click Wallet. Generate new address To begin mining using the PKT World Wallet, click Miner Start Mining","title":"How to install the PKT World Wallet (Windows only)"},{"location":"pktd/pktwallet/#how-to-install-a-cli-wallet","text":"If you already have a wallet created on your computer called wallet.db you will need to create a new wallet by following these steps: Download pktd-v1.5.1-macos.pkg Run the installation Open Terminal Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktwallet --create --wallet xxxx xxxx is the name of the wallet i.e. wallet personal Make sure to write this down for your notes Enter passphrase or leave empty Make sure to write this down for you notes Do NOT add additional layer of security Copy down your seed. If your wallet is destroyed, you can recover it as long as you have this seed and your wallet passphrase. Please keep in mind that anyone who has access to the seed only needs to guess your wallet passphrase to access your funds. Follow the instructions to finalize wallet","title":"How to install a CLI Wallet"},{"location":"pktd/pktwallet/#how-to-start-up-cli-wallet","text":"Open terminal Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktwallet --wallet (whatever you named your wallet) i.e wallet personal","title":"How to start up CLI Wallet"},{"location":"pktd/pktwallet/#how-to-create-new-pkt-wallet-address","text":"Make sure you have the CLI wallet running in a separate terminal window Open Terminal Enter command: $ cd pktd Enter command: $ ~/pktd/bin/pktctl --wallet getnewaddress Save your address in a safe place that is easily accessible","title":"How to create new PKT wallet address"},{"location":"pktd/pktwallet/#how-to-send-pkt-from-your-cli-wallet","text":"Make sure you have the CLI wallet running in a separate terminal window Command click on file to open Open terminal Enter command: $ cd pktd Enter Command: $ ~/pktd/pktd/bin/pktctl --wallet sendfrom pkt1xxxxx $$$$ '[\"pkt1xxxxx\"]' xxxxx = PKT address you want to send from and to $$$$ = amount of pkt you want to send","title":"How to send PKT from your CLI wallet"},{"location":"pktd/pktwallet/#how-to-install-a-cli-wallet-from-seed","text":"If you already have a wallet created on your computer called wallet.db you will need to create a new wallet by following these steps: Download pktd-v1.5.1-macos.pkg Command click on file to open Run the installation Open Terminal Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktwallet --create --wallet xxxx xxxx is the name of the wallet i.e. wallet personal Make sure to write this down for your notes Enter passphrase or leave empty Make sure to write this down for you notes Do NOT add additional layer of security Enter seed Start up wallet (see instructions above) Open new terminal window Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktctl --wallet getnewaddress repeat until you find receive (each of) your recovered wallet address(es) Enter the command: $ ~/pktd/bin/pktctl --wallet resync This will resync the wallet to the blockchain (takes at least 24 hours) Enter the command: $ ~/pktd/bin/pktctl --wallet getaddressbalances 1 1 this is how you view all your (sub)wallet balances","title":"How to install a CLI Wallet from Seed"},{"location":"pktd/pktwallet/#using-your-wallet","text":"pktctl is the program that interfaces with a running pktwallet instance. pktctl functions will not work if pktwallet is not running and accessible. Some functions will be limited until pktwallet is fully synchronized. Some functions require the wallet being unlocked before executing.","title":"Using Your Wallet"},{"location":"pktd/pktwallet/#getting-your-balance","text":"You can check your current PKT balance using pktctl or you can check the balances of each of your addresses if you have more than one. ./bin/pktctl --wallet getbalance or: ./bin/pktctl --wallet getaddressbalances getaddressbalances by itself will not show 0 balance addresses you may have created. To show these addresses, use: ./bin/pktctl --wallet getaddressbalances 1 1 For more explanation of the meaning of the output of getaddressbalances , use: ./bin/pktctl --wallet help getaddressbalances","title":"Getting Your Balance"},{"location":"pktd/pktwallet/#unlocking-wallet","text":"While many functions can be performed while the wallet is locked, other functions first require the wallet to be unlocked, including sending PKT and folding. The passphrase used to unlock the wallet was set when creating the wallet. To unlock your wallet for 120 seconds (this can be changed to your liking), use: ./bin/pktctl --wallet walletpassphrase 120 To keep your wallet unlocked, use: ./bin/pktctl --wallet walletpassphrase 0 If using 0 as in the previous example to keep your wallet indefinitely unlocked, it will stay unlocked until you either restart pktwallet or run: ./bin/pktctl --wallet walletlock NOTE: Special characters (e.g., !, #, & *) in your passphrase may be incorrectly interpreted by your shell. You may need to wrap your passphrase in quotes. ./bin/pktctl --wallet walletpassphrase 'suP3r_S3cReT^P@s5W0Rd!' 120","title":"Unlocking Wallet"},{"location":"pktd/pktwallet/#sending-pkt","text":"You can send PKT using the sendtoaddress command, but first you must unlock your wallet for sending, as shown in the previous step. To send cjd a 10 PKT tip: ./bin/pktctl --wallet sendtoaddress pkt1qt8xe7dwpelngtcpsgn5nkj3pwwdm7gf3l4auax 10","title":"Sending PKT"},{"location":"pktd/pktwallet/#sending-pkt-from-specific-address","text":"pktwallet gives you control over which addresses are used for making a payment. This means you can keep different PKT in your wallet separate, for example separating business transactions from personal transactions. NOTE : PKT is not a \"privacy coin\", so transactions are still shown in the blockchain like with Bitcoin. Unlock wallet: ./bin/pktctl --wallet walletpassphrase 60 Send 10 PKT to \"their address\" from \"your address\": ./bin/pktctl --wallet sendfrom 10 '[\"\"]' Notice the '[\" . This is because the last argument is actually a quoted JSON array . This means you can use multiple addresses as the source of a payment. For example: ./bin/pktctl --wallet sendfrom 10 '[\"\", \"\"]' Windows users require unique formatting for command prompt: pktctl.exe --wallet sendfrom 10 [\\\"\\\"]","title":"Sending PKT from Specific Address"},{"location":"pktd/pktwallet/#sweeping-an-address","text":"With pktwallet, sending 0 PKT has special significance in that it will send \"as much PKT as possible\". To sweep address into , you can use the following command: ./bin/pktctl --wallet sendfrom 0 '[\"\"]' Windows: pktctl.exe --wallet sendfrom 0 [\\\"\\\"] NOTE : Sweeping an address will send as much PKT as possible , which is not necessarily all PKT in that address. You may need to sweep multiple times before the address is empty.","title":"Sweeping an Address"},{"location":"pktd/pktwallet/#folding-coins","text":"If you are the recipient of many transactions, such as is the case in mining, you may not be able to spend all of them at once. This is similar to someone who is paid in pennies having a difficult time using the pennies to buy a car. To solve this issue, you can consolidate all of the coins which were paid to you by folding . Folding is sweeping an address to itself . Just like in sweeping, you may need to run the command many times before you have completely folded. See FAQs for more detail. For example: ./bin/pktctl --wallet sendfrom
    0 '[\"
    \"]' Windows: pktctl.exe --wallet sendfrom
    0 [\\\"
    \\\"]","title":"Folding Coins"},{"location":"pktd/pktwallet/#alternative-gui-wallets","text":"Electrum for PKT (Windows, MacOS, Linux) NOTE: Electrum is not appropriate for mining. Do NOT mine into an electrum wallet! PKT World Wallet (Windows) Zulu Wallet (MacOS)","title":"Alternative GUI Wallets"},{"location":"pktd/pktwallet/#faqs","text":"","title":"FAQs"},{"location":"pktd/pktwallet/#i-have-several-machines-mining-do-i-need-the-wallet-running-on-each-machine","text":"NO! In fact, the wallet doesn't need to be running at all to mine, but you do need to ensure you have control of the address you are mining to.","title":"I have several machines mining, do I need the wallet running on each machine?"},{"location":"pktd/pktwallet/#should-i-leave-pktwallet-running","text":"It is not a requirement to have pktwallet running to mine. However, if you leave it running, it will stay synced. This will save time when performing pktctl functions, such as folding and sending coins. If pktwallet has not been running for some time, it will need time to sync up to the current block from the time it last ran. As a safety precaution, don't forget to lock your wallet if you do keep it running.","title":"Should I leave pktwallet running?"},{"location":"pktd/pktwallet/#how-often-should-i-fold-and-why","text":"The purpose of folding is to turn all your small payments (such as from mining) into quickly and easily spendable coins. If you are multi-pool mining and have rewards in every block, you will have roughly 1440 unconsolidated transactions per day - one for each block at a rate of ~ 1 block/min. If you do not fold these transactions, after awhile you'll have a huge amount of transactions to process if you wish to send the sum or portion thereof of these smaller transactions. So, while folding isn't required and will have no impact on mining if you do or do not, you're doing yourself a favor later by keeping the transactions as consolidated as possible. It is typical to fold as much as possible every day or every few days when you think about it, depending on your use case. It can also be scripted. Note that folding is a transaction itself. Depending on how much you have to fold, you may need to run the command many times. You also may need to wait for coins to confirm before folding more. Once the folding command fails or you see a very low number in the outputcount field from running ./bin/pktctl --wallet getaddressbalances 1 1 or on PKT block explorer under Unconsolidated Txns, you have successfully folded the best you can for that point in time.","title":"How often should I fold and why?"},{"location":"pktwalletgui/","text":"PKT Wallet MacOS GUI \u00b6 NOTE : The PKT Wallet GUI handles mining income well and is a good wallet for those hoping to hold a copy of the blockchain and to keep ownership of their own keys and passphrases for multiple addresses. First setup \u00b6 MacOS \u00b6 Download pktwallet-(version).dmg Open Finder Double-click on your Downloads folder and find and double-click on pktwallet-(version).dmg to open the disk image A new window will open with the PKT Wallet app, click and drag it into your Applications folder Press Command+Space to open your Spotlight Search and type PKT Wallet, when you see the PKT Wallet app, press the Enter key to open it. The first time PKT Wallet is opened, you will get a popup asking you if you want to open it, click open Continue with Setting up your wallet or Load Existing Wallet From Seed below. Setting up your wallet \u00b6 Before you can begin using PKT, you need to setup your wallet, this means writing down your secret key and setting passwords so your PKT will stay safe. A video tutorial is available for this method: You will be asked to create a new wallet. Click \"Create Wallet\" Enter passphrase to encrypt your wallet. This passphrase must have upper case and lower case letters and numbers. Retype the passphrase to match and click the \"Enter\" button You will be asked if you want to import an existing seed. Click the \"Continue Without Seed\" button to continue. A 15-word wallet seed will be created for you. Write this seed down. It enables you to open your PKT wallet on another computer or smartphone, for example if your current computer dies. It is advisable to write this on a piece of paper and store it in a safe place. Click \"Open Wallet\" to continue. You will be brought to the main \"Balances\" screen. By default you have no addresses, so you will need to create one. Click the \"Create Address\" button, and then click the \"Generate\" button to generate a new address. The resulting code is the public address which people can pay you at. Click \"Balances\" again to display your balances. By default, accounts with zero PKT will not be displayed unless you click \"Get All Addresses\" Load Existing Wallet From Seed \u00b6 Before you can begin using PKT, you need to setup your wallet, this means writing down your secret key and setting passwords so your PKT will stay safe. A video tutorial is available for this method: You will be asked to create a new wallet. Click \"Create Wallet\" Enter passphrase to encrypt your wallet. This passphrase must have upper case and lower case letters and numbers. Retype the passphrase to match and click the \"Enter\" button You will be asked if you want to import an existing seed. Type in your wallet seed and any passphrase. Click the \"Continue With Seed\" button to continue. Your 15-word wallet seed will be displayed on the next screen. Write this seed down. It enables you to open your PKT wallet on another computer or smartphone, for example if your current computer dies. It is advisable to write this on a piece of paper and store it in a safe place. If you have a legacy wallet (from versions prior to 1.0.0), you will never be able to retrieve this seed again from the app. Click \"Open Wallet\" to continue. You will be brought to the main \"Balances\" screen. By default you have no addresses, so you will need to create one. Click the \"Create Address\" button, and then click the \"Generate\" button to generate a new address. The resulting code is the public address which people can pay you at. If this wallet previously had a wallet, address is actually an exsting one that has been retrieved, rather than a newly created address. Click \"Balances\" again to display your balances. By default, accounts with zero PKT will not be displayed unless you click \"Get All Addresses\". It may take several hours for the app to sync the blockchain for the first time. During that time, balances will not be available for your addresses. You will have to verify the balance on the address using the PKT Blockchain Explorer Click \"Receive\" and select the wallet you want to inspect Copy and paste the address into the search field of the PKT Blockchain Explorer, then click the \"Search\" icon. Receiving PKT \u00b6 To receive coins, you need to create a new PKT address Click the \"Receive\" tab Type a description for the purpose of receiving the coins, this will appear in the notification when you get paid Set the expiration, if this is not an invoice , you can choose \"never\" After you click \"Request\", your wallet will create a new address and copy it to your clipboard so you can send it to the person paying you (or transfer money to your new wallet) When PKT gets sent to your new address, you will get a notification. It says \"unconfirmed\" because the transaction has not yet been included in the history of the blockchain. Congratulations, you have received your first PKT. It make take some time before the transaction is confirmed by the network and the PKT is formally in your account. Sending PKT \u00b6 To pay PKT to someone else, click on the Send tab and paste the address to be paid Type a description of the payment, this is just for you, it will not be sent to the person you are paying Enter the amount to be paid Click Pay You will be prompted to enter your wallet passphrase in order to decrypt the wallet for one brief moment to send the PKT Every transaction requires a fee for inclusion in the blockchain, this is a very small cost: 132 nPKT is one hundred and thirty two nano-PKT (that means billionths , i.e. 0.000000132 PKT) After you enter your passphrase and click \"send\", you will see a transaction ID , this set of numbers and letters uniquely identifies your transaction and can be used to view it in the block explorer. Just like when receiving, your transaction will appear first as \"unconfirmed\" and then later it will switch to a clock when it has been included in the blockchain. When people consider a transaction to be \"complete\" depends on the merchant, but in after some time the transaction will be confirmed and the PKT be in the recipient's account. Congratulations, you've sent PKT! About Units \u00b6 Each PKT is made up of 1000 milli-PKT, denoted mPKT Each milli-PKT is sub-divided into 1000 micro-PKT, denoted uPKT Each micro-PKT is sub-divided into 1000 nano-PKT, denoted nPKT Statistical Verification \u00b6 PKT Electrum makes the job of an attacker hard by asking for an unpredictable random set of PacketCrypt proofs, the chance of any give block being verified is based on the distance between the tip of the chain and that block. The chance is defined as MIN(100%, K / distance_from_tip) where K is a constant which we set at 20 to make PKT Electrum verify around 200 blocks total. With K = 20 , the first 20 blocks have a 100% chance of being verified. * block 21 has a 95% chance * block 25 has an 80% chance * block 50 has a 40% chance * block 80 has a 25% chance The distribution of likelyhood of verifying a block is shown by this chart:","title":"PKT Wallet MacOS GUI"},{"location":"pktwalletgui/#pkt-wallet-macos-gui","text":"NOTE : The PKT Wallet GUI handles mining income well and is a good wallet for those hoping to hold a copy of the blockchain and to keep ownership of their own keys and passphrases for multiple addresses.","title":"PKT Wallet MacOS GUI"},{"location":"pktwalletgui/#first-setup","text":"","title":"First setup"},{"location":"pktwalletgui/#macos","text":"Download pktwallet-(version).dmg Open Finder Double-click on your Downloads folder and find and double-click on pktwallet-(version).dmg to open the disk image A new window will open with the PKT Wallet app, click and drag it into your Applications folder Press Command+Space to open your Spotlight Search and type PKT Wallet, when you see the PKT Wallet app, press the Enter key to open it. The first time PKT Wallet is opened, you will get a popup asking you if you want to open it, click open Continue with Setting up your wallet or Load Existing Wallet From Seed below.","title":"MacOS"},{"location":"pktwalletgui/#setting-up-your-wallet","text":"Before you can begin using PKT, you need to setup your wallet, this means writing down your secret key and setting passwords so your PKT will stay safe. A video tutorial is available for this method: You will be asked to create a new wallet. Click \"Create Wallet\" Enter passphrase to encrypt your wallet. This passphrase must have upper case and lower case letters and numbers. Retype the passphrase to match and click the \"Enter\" button You will be asked if you want to import an existing seed. Click the \"Continue Without Seed\" button to continue. A 15-word wallet seed will be created for you. Write this seed down. It enables you to open your PKT wallet on another computer or smartphone, for example if your current computer dies. It is advisable to write this on a piece of paper and store it in a safe place. Click \"Open Wallet\" to continue. You will be brought to the main \"Balances\" screen. By default you have no addresses, so you will need to create one. Click the \"Create Address\" button, and then click the \"Generate\" button to generate a new address. The resulting code is the public address which people can pay you at. Click \"Balances\" again to display your balances. By default, accounts with zero PKT will not be displayed unless you click \"Get All Addresses\"","title":"Setting up your wallet"},{"location":"pktwalletgui/#load-existing-wallet-from-seed","text":"Before you can begin using PKT, you need to setup your wallet, this means writing down your secret key and setting passwords so your PKT will stay safe. A video tutorial is available for this method: You will be asked to create a new wallet. Click \"Create Wallet\" Enter passphrase to encrypt your wallet. This passphrase must have upper case and lower case letters and numbers. Retype the passphrase to match and click the \"Enter\" button You will be asked if you want to import an existing seed. Type in your wallet seed and any passphrase. Click the \"Continue With Seed\" button to continue. Your 15-word wallet seed will be displayed on the next screen. Write this seed down. It enables you to open your PKT wallet on another computer or smartphone, for example if your current computer dies. It is advisable to write this on a piece of paper and store it in a safe place. If you have a legacy wallet (from versions prior to 1.0.0), you will never be able to retrieve this seed again from the app. Click \"Open Wallet\" to continue. You will be brought to the main \"Balances\" screen. By default you have no addresses, so you will need to create one. Click the \"Create Address\" button, and then click the \"Generate\" button to generate a new address. The resulting code is the public address which people can pay you at. If this wallet previously had a wallet, address is actually an exsting one that has been retrieved, rather than a newly created address. Click \"Balances\" again to display your balances. By default, accounts with zero PKT will not be displayed unless you click \"Get All Addresses\". It may take several hours for the app to sync the blockchain for the first time. During that time, balances will not be available for your addresses. You will have to verify the balance on the address using the PKT Blockchain Explorer Click \"Receive\" and select the wallet you want to inspect Copy and paste the address into the search field of the PKT Blockchain Explorer, then click the \"Search\" icon.","title":"Load Existing Wallet From Seed"},{"location":"pktwalletgui/#receiving-pkt","text":"To receive coins, you need to create a new PKT address Click the \"Receive\" tab Type a description for the purpose of receiving the coins, this will appear in the notification when you get paid Set the expiration, if this is not an invoice , you can choose \"never\" After you click \"Request\", your wallet will create a new address and copy it to your clipboard so you can send it to the person paying you (or transfer money to your new wallet) When PKT gets sent to your new address, you will get a notification. It says \"unconfirmed\" because the transaction has not yet been included in the history of the blockchain. Congratulations, you have received your first PKT. It make take some time before the transaction is confirmed by the network and the PKT is formally in your account.","title":"Receiving PKT"},{"location":"pktwalletgui/#sending-pkt","text":"To pay PKT to someone else, click on the Send tab and paste the address to be paid Type a description of the payment, this is just for you, it will not be sent to the person you are paying Enter the amount to be paid Click Pay You will be prompted to enter your wallet passphrase in order to decrypt the wallet for one brief moment to send the PKT Every transaction requires a fee for inclusion in the blockchain, this is a very small cost: 132 nPKT is one hundred and thirty two nano-PKT (that means billionths , i.e. 0.000000132 PKT) After you enter your passphrase and click \"send\", you will see a transaction ID , this set of numbers and letters uniquely identifies your transaction and can be used to view it in the block explorer. Just like when receiving, your transaction will appear first as \"unconfirmed\" and then later it will switch to a clock when it has been included in the blockchain. When people consider a transaction to be \"complete\" depends on the merchant, but in after some time the transaction will be confirmed and the PKT be in the recipient's account. Congratulations, you've sent PKT!","title":"Sending PKT"},{"location":"pktwalletgui/#about-units","text":"Each PKT is made up of 1000 milli-PKT, denoted mPKT Each milli-PKT is sub-divided into 1000 micro-PKT, denoted uPKT Each micro-PKT is sub-divided into 1000 nano-PKT, denoted nPKT","title":"About Units"},{"location":"pktwalletgui/#statistical-verification","text":"PKT Electrum makes the job of an attacker hard by asking for an unpredictable random set of PacketCrypt proofs, the chance of any give block being verified is based on the distance between the tip of the chain and that block. The chance is defined as MIN(100%, K / distance_from_tip) where K is a constant which we set at 20 to make PKT Electrum verify around 200 blocks total. With K = 20 , the first 20 blocks have a 100% chance of being verified. * block 21 has a 95% chance * block 25 has an 80% chance * block 50 has a 40% chance * block 80 has a 25% chance The distribution of likelyhood of verifying a block is shown by this chart:","title":"Statistical Verification"},{"location":"start_mining/announcement-mining/","text":"How to Start Announcement Mining \u00b6 Announcement Mining creates a small (1KB) message that is difficult to compress and proves work was done. Announcements are transmitted to and collected by block miners to form blocks. This simulates the transmission of data across the network. Announcement miners must maximize their CPU processing power and bandwidth upload speed for the highest yields. Announcement mining can be done from nearly any device that has a CPU processor and access to bandwidth. Also include: Multi-pool mining means submitting the exact same announcements to multiple pools. So if you have the bandwidth available it will always benefit you to mine in all of the major pools. Mining \u00b6 PacketCrypt is a bandwidth hard proof of work , this means it requires lots of bandwidth to mine. Miners collaborate with one another by sending small messages (called Announcements ) and the sending of these messages requires a large amount of bandwidth . Miners who are working in collaboration with one another are members of a mining pool, therefore all mining of PacketCrypt is done in pools. PacketCrypt mining is split into two distinct stages: Announcement Mining - Using your CPU to create Announcements Block Mining - Collecting Announcements from Announcement Miners and using them to mine blocks Block mining is typically done at the mining pool's datacenter, however Announcement mining can be done from anywhere. How to Announcement mine \u00b6 There are a number of options available when it comes to installing the PacketCrpyt announcement miner. Choose whichever best suits your technical ability: 1. Install a Pre-built Binary \u00b6 Pre-built packetcrypt binaries (for linux) or installation packages (for macos) and archives (for windows) can be downloaded from packetcrypt releases page . For windows , download the zip archive suffixed with -windows.zip and extract its content. For macos , download the package suffixed with .pkg and click on its icon in the Finder for installation. For linux , download the binary suffixed with -linux_amd64 and rename it packetcrypt . If you're on Arch linux or Manjaro, you can install the packetcrypt AUR package 2. Deploy a Docker Image \u00b6 There is a PacketCrypt Docker image available, which can be used for announcement mining. To install: Download and install Docker for your operating system. Download the PacketCrypt Docker image: $ docker pull thomasjp0x42/packetcrypt There are also PacketCrypt Docker images built without the portable flag ( --no-portable ) which may increase the performance of the announcement mining while reducing CPU compatibility. One such image (compiled on AMD 5950x) is available at thomasjp0x42/packetcrypt-amd64 . Additionally, for ARM devices such as Raspberry Pi, there is an image available at thomasjp0x42/packetcrypt-arm64 . The arm64 image will also work on Apple silicon such as the M1 and M2 chips. Run the container similar to the commands described in the Begin Announcement Mining section, except replace this part of the command: $ packetcrypt with this command to run PacketCrypt from Docker: $ docker run thomasjp0x42/packetcrypt The final command will be formatted like this: $ docker run thomasjp0x42/packetcrypt ann -p More information can be found at the PacketCrypt DockerHub page 3. Build From Source \u00b6 Building from source will generally offer the best mining performance but requires more technical knowledge than the previous two options. First install rust if you haven't, see: rustup git clone https://github.com/cjdelisle/packetcrypt_rs cd packetcrypt_rs cargo build --release See the PacketCrypt GitHub repository for more detailed instructions. Begin Announcement Mining \u00b6 Important You cannot mine into the electrum wallet , You can only mine into the Command Line Wallet , the Pkt.World Wallet or the Mac GUI Wallet . To begin mining, you will need the address of your wallet and you will need to choose a pool. There are two ways to configure the announcement miner; by using CLI parameters or by using a configuration file: Using the CLI packetcrypt ann -p pool_1 [pool_2 pool_3 pool_4] [or for windows] packetcrypt.exe ann -p pool_1 [pool_2 pool_3 pool_4] Using a Configuration File A configuration file must be in JSON format. The file can be loaded from the local filesystem or from a web-accessible location. Any CLI parameters used will overide the corresponding settings in the configuration file. Example config.json: { \"payment_addr\": \"\", \"pools\": [ \"pool_1\", \"pool_2\", \"pool_3\", \"pool_4\" ] } packetcrypt ann -c \"./config.json\" [or] packetcrypt ann -c \"https://example.com/config.json\" [or for windows] packetcrypt.exe ann -c \"./config.json\" [or] packetcrypt.exe ann -c \"https://example.com/config.json\" Announcement mining can be done into a single pool or multiple pools. When you announcement mine into multiple pools, you will be paid by each pool that you submit announcements to. pool_1 is the pool running the highest difficulty. If you notice problems, you can test listing the pools in a different order. The number of pools you mine into is at your discretion. If a pool is down or malfunctioning you will notice the pool is not mining at [100%] in your mining feed and you can choose to remove the under-performing or malfunctioning pool. How to install a PKT miner on Mac \u00b6 Install the Zulu or CLI PKT Wallet from https://docs.pkt.cash Download the PacketCrypt.pkg for mac Open your Terminal Install Rust by entering in the command: $ curl --proto '=https' --tlsv1.2 -sSf * https://sh.rustup.rs | sh Press 1 to confirm Enter the command: $ sudo install make Enter the command: $ git clone https://github.com/cjdelisle/packetcrypt_rs Enter the command: $ cd packetcrypt_rs Enter the command: $ ~/.cargo/bin/cargo build --release Enter the command: $ ./target/release/packetcrypt ann -p [your PKT Wallet Address] [pool 1] [pool 2] [pool 3] [pool 4] Choosing Pools to mine in \u00b6 You can mine in as many pools as you have the bandwidth to supply. The same data will be uploaded so your CPU is only used once. Currently the pools which are regularly winning blocks include: Pkteer: http://pool.pkteer.com PKTPool: http://pool.pktpool.io PktWorld: http://pool.pkt.world Zetahash (f.k.a. Srizbi): https://stratum.zetahash.com In general the recommendation is to list the pool with highest difficulty in the first position to ensure your announcements will be accepted, as the standardized policy is to accept announcements of a higher difficulty for pools with a lower base difficulty. In some cases the rewards might vary depending on the pool order regardless of difficulty, subject to custom policies implemented by the respective pools. (Check the relevant channels on Discord for current pool statuses) You should test your daily earnings on each pool to see which one is best. Your mining revenue depends on how much each pool allocates towards announcement miners as well as how much hardware they are using in-house. The pools are winning different blocks and if you mine to just one pool, your not getting any payment from the others when they win a block. It's the same with mining to a pool that is not winning any blocks. Limiting System Resource Usage \u00b6 Limiting the system resources available to Packetcrypt may negatively effect your mining power but can be useful to conserve resources for other processess. Limit CPU Usage \u00b6 Announcement mining is a resource intensive process. By default, Packetcrypt will use 100% of the available CPU resources. CPU usage can be limited by assigning a limited number of threads to packetcrypt using the -t CLI parameter or \"threads\" key if using a configuration file. Example of assigning four (4) threads to Packetcrypt: packetcrypt ann -p pool_1 [pool_2 pool_3 pool_4] -t 4 or { \"threads\" 4 } Limit Bandwidth Usage \u00b6 Bandwidth usage is directly related to two main factors: 1 - Mining difficulty of the primary pool (the first pool listed in Packetcrypt pool configuration) A lower difficulty means higher bandwidth usage 2 - The number of pools mined Packetcrypt will send the same Announcements to each pool mined Bandwidth usage can therefore be limited by selecting a higher difficulty pool as the primary pool and/or by mining to fewer pools. Block Mining & Running a Pool \u00b6 Because each block miner must use as much bandwidth as all of the announcement miners combined , block mining is typically done at the location of the pool. Even a pool operator who wanted to support external block mining would find that the pool itself would need enough upload bandwidth to match all of the block miners - which would be completely untenable. If you are interested in block mining, contact the pool operator and discuss sending hardware to their location. Starting your own pool requires setting up a number of services: pktd node (one or more) - One pktd instance is required for the Master to function, each of the Block Handlers may optionally use separate pktd nodes. Master (one) - This node coordinates all of the others and provides work files and configuration Ann Handler (one or more) - These are high performance nodes which accept announcements from the announcement miners in the network, they also provide announcements to the block miners. As you scale up the amount of bandwidth in the pool, you will need to add more Ann handlers. Block Miner (one or more) - These nodes download announcements from the announcement handlers and use them in the mining process to mine blocks. Block Handlers (one or more) - These nodes receive \"block shares\" from the block miners and submit blocks if Paymaker (1) - This node receives updates from the Ann Handlers and Block Handlers and keeps track of who should be paid. The Paymaker sends configuration to the pktd node which is used by the Master in order to make the pool pay out the announcement and block miners PacketCrypt Data Flow \u00b6 \u2588 Orange: Announcements are sent from the Announcement miners to the Ann Handlers and then to the Block miners \u2588 Blue: Block shares are sent from block miners to Block Handler(s) \u2588 Purple: Winning blocks are submitted by the Block Handler(s) to pktd and the PKT network \u2588 Pink: Block Handlers and Ann Handlers inform Paymaker of work done by announcement and block miners \u2588 Green: Paymaker configures pktd instance to create blocks which pay the people who have been mining \u2588 Brown: Master gets block templates from pktd instance Black dotted line: All nodes request configuration and block templates from Master node More Information and PacketCrypt Pool Code \u00b6 The code and documentation for running a pool is available on the C / nodejs version of the PacketCrypt project, the new Rust version only contains Announcement Miner and Announcement Handlers. Announcement Difficulty \u00b6 PacketCrypt is designed in such a way that a mining pool can double its effective power by: Doubling the total block mining computation effort Doubling the total announcement mining computation effort, or Doubling the amount of bandwidth between announcement miners and the pool The way that a pool operator limits the amount of bandwidth flowing into the pool, to prevent overloading of the network, is by setting what is known as the announcement difficulty . The announcement difficulty for a pool specifies how much work must be done on an announcement in order for the announcement to be accepted and paid out by the pool. Announcement difficulty serves to slow down the announcement miners to protect the pool's network. In general, doubling the announcement difficulty will halve the amount of bandwidth used by the pool and will also halve the pool's overall mining power, with a limit that setting the announcement difficulty lower than 2 does not bring any additional value. To explain why it works like this, we need to examine the PacketCrypt algorithm rules and the in particular how the block mining software decides which announcements to use when attempting to mine a block. Announcement Set Selection \u00b6 PacketCrypt algorithm allows block miners to perform less work if they are able to prove that they had a certain number of \"high value\" announcements in memory at the time of mining, the exact ratio of actual work a block miner must do to the amount of work the PKT blockchain requires is called the power multipler . For a block miner seeking to optimize their power multiplier, every announcement has a particular level of utility value which is based on the amount of work that was done by the announcement miner (announcement difficulty) and how old the announcement is. We call this the effective difficulty . The effective difficulty of an announcement starts off as the actual difficulty of the work done to mine it and then decreases by half every block-period until it is less than 1 and the announcement is no longer usable for mining. The block mining software selects a subset of announcements which which will give it the best power multiplier based on the PacketCrypt algorithm: power_multiplier = min(effective_difficulty) * ann_count ** 2 The min(effective_difficulty) is the effective difficulty of the \"least valuable\" announcement that is being mined with. Lets assume that announcement miners are providing a steady supply of 1000 announcements per block-period and all announcements have an initial announcement difficulty of 128. The block mining software can choose to mine with 1000 announcements at 128 effective difficulty, or with 2000 announcements at 64 effective difficulty, or with 3000 announcements at 32 effective difficulty and so on. The best choice is to use the previous three block periods which provides a power multiplier that is 225% higher than that of using just the most recent 1 period worth of announcements. This curve is the same no matter what difficulty we are starting with. Optimal Difficulty Curve \u00b6 Knowing that the optimal announcement set is all of those announcements mined over the past 3 block periods, we can compute the overall power of a pool as the announcement difficulty is raised. At announcement difficulty 1, announcements cannot be used for more than 1 block, but if we imagine that the announcement mining community can produce 1000 announcements per block at difficulty 1 then we can reason that the power multiplier will be 1000 ** 2 or 1 million. At difficulty 2 we can expect the announcement miners will produce 500 announcements per block period but since 2 block periods can be used, the power multiplier is the same. At difficulty 4, the announcement miners will produce 250 announcements per block period and they will be valid for 3 block periods making the power multiplier 750 ** 2 or 562,500. From here, the power output of the power multiplier of the optimal announcement set halves for each doubling of the announcement difficulty, making the optimal difficulty 2 . FAQ for ANN Miners \u00b6 What does overflow mean? \u00b6 When the ann handler receives an announcement, it puts it into a queue, when the queue fills up it responds overflow immediately. The queue can become long, so you may receive \"operation timed out\" you're still being paid, when you receive \"overflow\" you are not being paid. Unfortunately, you may also receive \"operation timed out\" because the handler is unresponsive, it's not obvious which is the reason from looking at the logs. For example, what you will see in the AnnMiner Logs: 1618394538 INFO annmine.rs:519 467 Ke/s 28.56Mb/s overflow: [0, 0, 3072, 0] uploading: [0, 0, 17632, 0] accept/reject: [26932/0, 0/0, 4856/0, 796/0] - goodrate: [100%, 100%, 61%, 100%] 467 Ke/s 467 kilo-encryptions (thousands of encryptions) per second of mining power. 28.56Mb/s Total upload bandwidth (to all pools - combined) overflow: [0, 0, 3072, 0] Overflowed the internal queue of the ann miner, before it was even able to upload to the pool, one number for each pool you're mining to. 3072 Number of anns which are not uploaded to pool #3. uploading [0, 0, 17632, 0] Number of anns currently in-flight in active http requests, again 3rd pool is a problem, others are doing well (in this example). accept/reject [26932/0, 0/0, 4856/0, 796/0] Anns accepted/rejected by each pool, these numbers are based on the previous 10 seconds, pool #2 is giving a zero accepted which might be an issue, keep watching the next message 10 seconds later for another update. goodrate [100%, 100%, 61%, 100%] Goodrate = number of anns accepted divided by number of anns produced.","title":"How to Start Announcement Mining"},{"location":"start_mining/announcement-mining/#how-to-start-announcement-mining","text":"Announcement Mining creates a small (1KB) message that is difficult to compress and proves work was done. Announcements are transmitted to and collected by block miners to form blocks. This simulates the transmission of data across the network. Announcement miners must maximize their CPU processing power and bandwidth upload speed for the highest yields. Announcement mining can be done from nearly any device that has a CPU processor and access to bandwidth. Also include: Multi-pool mining means submitting the exact same announcements to multiple pools. So if you have the bandwidth available it will always benefit you to mine in all of the major pools.","title":"How to Start Announcement Mining"},{"location":"start_mining/announcement-mining/#mining","text":"PacketCrypt is a bandwidth hard proof of work , this means it requires lots of bandwidth to mine. Miners collaborate with one another by sending small messages (called Announcements ) and the sending of these messages requires a large amount of bandwidth . Miners who are working in collaboration with one another are members of a mining pool, therefore all mining of PacketCrypt is done in pools. PacketCrypt mining is split into two distinct stages: Announcement Mining - Using your CPU to create Announcements Block Mining - Collecting Announcements from Announcement Miners and using them to mine blocks Block mining is typically done at the mining pool's datacenter, however Announcement mining can be done from anywhere.","title":"Mining"},{"location":"start_mining/announcement-mining/#how-to-announcement-mine","text":"There are a number of options available when it comes to installing the PacketCrpyt announcement miner. Choose whichever best suits your technical ability:","title":"How to Announcement mine"},{"location":"start_mining/announcement-mining/#1-install-a-pre-built-binary","text":"Pre-built packetcrypt binaries (for linux) or installation packages (for macos) and archives (for windows) can be downloaded from packetcrypt releases page . For windows , download the zip archive suffixed with -windows.zip and extract its content. For macos , download the package suffixed with .pkg and click on its icon in the Finder for installation. For linux , download the binary suffixed with -linux_amd64 and rename it packetcrypt . If you're on Arch linux or Manjaro, you can install the packetcrypt AUR package","title":"1. Install a Pre-built Binary"},{"location":"start_mining/announcement-mining/#2-deploy-a-docker-image","text":"There is a PacketCrypt Docker image available, which can be used for announcement mining. To install: Download and install Docker for your operating system. Download the PacketCrypt Docker image: $ docker pull thomasjp0x42/packetcrypt There are also PacketCrypt Docker images built without the portable flag ( --no-portable ) which may increase the performance of the announcement mining while reducing CPU compatibility. One such image (compiled on AMD 5950x) is available at thomasjp0x42/packetcrypt-amd64 . Additionally, for ARM devices such as Raspberry Pi, there is an image available at thomasjp0x42/packetcrypt-arm64 . The arm64 image will also work on Apple silicon such as the M1 and M2 chips. Run the container similar to the commands described in the Begin Announcement Mining section, except replace this part of the command: $ packetcrypt with this command to run PacketCrypt from Docker: $ docker run thomasjp0x42/packetcrypt The final command will be formatted like this: $ docker run thomasjp0x42/packetcrypt ann -p More information can be found at the PacketCrypt DockerHub page","title":"2. Deploy a Docker Image"},{"location":"start_mining/announcement-mining/#3-build-from-source","text":"Building from source will generally offer the best mining performance but requires more technical knowledge than the previous two options. First install rust if you haven't, see: rustup git clone https://github.com/cjdelisle/packetcrypt_rs cd packetcrypt_rs cargo build --release See the PacketCrypt GitHub repository for more detailed instructions.","title":"3. Build From Source"},{"location":"start_mining/announcement-mining/#begin-announcement-mining","text":"Important You cannot mine into the electrum wallet , You can only mine into the Command Line Wallet , the Pkt.World Wallet or the Mac GUI Wallet . To begin mining, you will need the address of your wallet and you will need to choose a pool. There are two ways to configure the announcement miner; by using CLI parameters or by using a configuration file: Using the CLI packetcrypt ann -p pool_1 [pool_2 pool_3 pool_4] [or for windows] packetcrypt.exe ann -p pool_1 [pool_2 pool_3 pool_4] Using a Configuration File A configuration file must be in JSON format. The file can be loaded from the local filesystem or from a web-accessible location. Any CLI parameters used will overide the corresponding settings in the configuration file. Example config.json: { \"payment_addr\": \"\", \"pools\": [ \"pool_1\", \"pool_2\", \"pool_3\", \"pool_4\" ] } packetcrypt ann -c \"./config.json\" [or] packetcrypt ann -c \"https://example.com/config.json\" [or for windows] packetcrypt.exe ann -c \"./config.json\" [or] packetcrypt.exe ann -c \"https://example.com/config.json\" Announcement mining can be done into a single pool or multiple pools. When you announcement mine into multiple pools, you will be paid by each pool that you submit announcements to. pool_1 is the pool running the highest difficulty. If you notice problems, you can test listing the pools in a different order. The number of pools you mine into is at your discretion. If a pool is down or malfunctioning you will notice the pool is not mining at [100%] in your mining feed and you can choose to remove the under-performing or malfunctioning pool.","title":"Begin Announcement Mining"},{"location":"start_mining/announcement-mining/#how-to-install-a-pkt-miner-on-mac","text":"Install the Zulu or CLI PKT Wallet from https://docs.pkt.cash Download the PacketCrypt.pkg for mac Open your Terminal Install Rust by entering in the command: $ curl --proto '=https' --tlsv1.2 -sSf * https://sh.rustup.rs | sh Press 1 to confirm Enter the command: $ sudo install make Enter the command: $ git clone https://github.com/cjdelisle/packetcrypt_rs Enter the command: $ cd packetcrypt_rs Enter the command: $ ~/.cargo/bin/cargo build --release Enter the command: $ ./target/release/packetcrypt ann -p [your PKT Wallet Address] [pool 1] [pool 2] [pool 3] [pool 4]","title":"How to install a PKT miner on Mac"},{"location":"start_mining/announcement-mining/#choosing-pools-to-mine-in","text":"You can mine in as many pools as you have the bandwidth to supply. The same data will be uploaded so your CPU is only used once. Currently the pools which are regularly winning blocks include: Pkteer: http://pool.pkteer.com PKTPool: http://pool.pktpool.io PktWorld: http://pool.pkt.world Zetahash (f.k.a. Srizbi): https://stratum.zetahash.com In general the recommendation is to list the pool with highest difficulty in the first position to ensure your announcements will be accepted, as the standardized policy is to accept announcements of a higher difficulty for pools with a lower base difficulty. In some cases the rewards might vary depending on the pool order regardless of difficulty, subject to custom policies implemented by the respective pools. (Check the relevant channels on Discord for current pool statuses) You should test your daily earnings on each pool to see which one is best. Your mining revenue depends on how much each pool allocates towards announcement miners as well as how much hardware they are using in-house. The pools are winning different blocks and if you mine to just one pool, your not getting any payment from the others when they win a block. It's the same with mining to a pool that is not winning any blocks.","title":"Choosing Pools to mine in"},{"location":"start_mining/announcement-mining/#limiting-system-resource-usage","text":"Limiting the system resources available to Packetcrypt may negatively effect your mining power but can be useful to conserve resources for other processess.","title":"Limiting System Resource Usage"},{"location":"start_mining/announcement-mining/#limit-cpu-usage","text":"Announcement mining is a resource intensive process. By default, Packetcrypt will use 100% of the available CPU resources. CPU usage can be limited by assigning a limited number of threads to packetcrypt using the -t CLI parameter or \"threads\" key if using a configuration file. Example of assigning four (4) threads to Packetcrypt: packetcrypt ann -p pool_1 [pool_2 pool_3 pool_4] -t 4 or { \"threads\" 4 }","title":"Limit CPU Usage"},{"location":"start_mining/announcement-mining/#limit-bandwidth-usage","text":"Bandwidth usage is directly related to two main factors: 1 - Mining difficulty of the primary pool (the first pool listed in Packetcrypt pool configuration) A lower difficulty means higher bandwidth usage 2 - The number of pools mined Packetcrypt will send the same Announcements to each pool mined Bandwidth usage can therefore be limited by selecting a higher difficulty pool as the primary pool and/or by mining to fewer pools.","title":"Limit Bandwidth Usage"},{"location":"start_mining/announcement-mining/#block-mining-running-a-pool","text":"Because each block miner must use as much bandwidth as all of the announcement miners combined , block mining is typically done at the location of the pool. Even a pool operator who wanted to support external block mining would find that the pool itself would need enough upload bandwidth to match all of the block miners - which would be completely untenable. If you are interested in block mining, contact the pool operator and discuss sending hardware to their location. Starting your own pool requires setting up a number of services: pktd node (one or more) - One pktd instance is required for the Master to function, each of the Block Handlers may optionally use separate pktd nodes. Master (one) - This node coordinates all of the others and provides work files and configuration Ann Handler (one or more) - These are high performance nodes which accept announcements from the announcement miners in the network, they also provide announcements to the block miners. As you scale up the amount of bandwidth in the pool, you will need to add more Ann handlers. Block Miner (one or more) - These nodes download announcements from the announcement handlers and use them in the mining process to mine blocks. Block Handlers (one or more) - These nodes receive \"block shares\" from the block miners and submit blocks if Paymaker (1) - This node receives updates from the Ann Handlers and Block Handlers and keeps track of who should be paid. The Paymaker sends configuration to the pktd node which is used by the Master in order to make the pool pay out the announcement and block miners","title":"Block Mining & Running a Pool"},{"location":"start_mining/announcement-mining/#packetcrypt-data-flow","text":"\u2588 Orange: Announcements are sent from the Announcement miners to the Ann Handlers and then to the Block miners \u2588 Blue: Block shares are sent from block miners to Block Handler(s) \u2588 Purple: Winning blocks are submitted by the Block Handler(s) to pktd and the PKT network \u2588 Pink: Block Handlers and Ann Handlers inform Paymaker of work done by announcement and block miners \u2588 Green: Paymaker configures pktd instance to create blocks which pay the people who have been mining \u2588 Brown: Master gets block templates from pktd instance Black dotted line: All nodes request configuration and block templates from Master node","title":"PacketCrypt Data Flow"},{"location":"start_mining/announcement-mining/#more-information-and-packetcrypt-pool-code","text":"The code and documentation for running a pool is available on the C / nodejs version of the PacketCrypt project, the new Rust version only contains Announcement Miner and Announcement Handlers.","title":"More Information and PacketCrypt Pool Code"},{"location":"start_mining/announcement-mining/#announcement-difficulty","text":"PacketCrypt is designed in such a way that a mining pool can double its effective power by: Doubling the total block mining computation effort Doubling the total announcement mining computation effort, or Doubling the amount of bandwidth between announcement miners and the pool The way that a pool operator limits the amount of bandwidth flowing into the pool, to prevent overloading of the network, is by setting what is known as the announcement difficulty . The announcement difficulty for a pool specifies how much work must be done on an announcement in order for the announcement to be accepted and paid out by the pool. Announcement difficulty serves to slow down the announcement miners to protect the pool's network. In general, doubling the announcement difficulty will halve the amount of bandwidth used by the pool and will also halve the pool's overall mining power, with a limit that setting the announcement difficulty lower than 2 does not bring any additional value. To explain why it works like this, we need to examine the PacketCrypt algorithm rules and the in particular how the block mining software decides which announcements to use when attempting to mine a block.","title":"Announcement Difficulty"},{"location":"start_mining/announcement-mining/#announcement-set-selection","text":"PacketCrypt algorithm allows block miners to perform less work if they are able to prove that they had a certain number of \"high value\" announcements in memory at the time of mining, the exact ratio of actual work a block miner must do to the amount of work the PKT blockchain requires is called the power multipler . For a block miner seeking to optimize their power multiplier, every announcement has a particular level of utility value which is based on the amount of work that was done by the announcement miner (announcement difficulty) and how old the announcement is. We call this the effective difficulty . The effective difficulty of an announcement starts off as the actual difficulty of the work done to mine it and then decreases by half every block-period until it is less than 1 and the announcement is no longer usable for mining. The block mining software selects a subset of announcements which which will give it the best power multiplier based on the PacketCrypt algorithm: power_multiplier = min(effective_difficulty) * ann_count ** 2 The min(effective_difficulty) is the effective difficulty of the \"least valuable\" announcement that is being mined with. Lets assume that announcement miners are providing a steady supply of 1000 announcements per block-period and all announcements have an initial announcement difficulty of 128. The block mining software can choose to mine with 1000 announcements at 128 effective difficulty, or with 2000 announcements at 64 effective difficulty, or with 3000 announcements at 32 effective difficulty and so on. The best choice is to use the previous three block periods which provides a power multiplier that is 225% higher than that of using just the most recent 1 period worth of announcements. This curve is the same no matter what difficulty we are starting with.","title":"Announcement Set Selection"},{"location":"start_mining/announcement-mining/#optimal-difficulty-curve","text":"Knowing that the optimal announcement set is all of those announcements mined over the past 3 block periods, we can compute the overall power of a pool as the announcement difficulty is raised. At announcement difficulty 1, announcements cannot be used for more than 1 block, but if we imagine that the announcement mining community can produce 1000 announcements per block at difficulty 1 then we can reason that the power multiplier will be 1000 ** 2 or 1 million. At difficulty 2 we can expect the announcement miners will produce 500 announcements per block period but since 2 block periods can be used, the power multiplier is the same. At difficulty 4, the announcement miners will produce 250 announcements per block period and they will be valid for 3 block periods making the power multiplier 750 ** 2 or 562,500. From here, the power output of the power multiplier of the optimal announcement set halves for each doubling of the announcement difficulty, making the optimal difficulty 2 .","title":"Optimal Difficulty Curve"},{"location":"start_mining/announcement-mining/#faq-for-ann-miners","text":"","title":"FAQ for ANN Miners"},{"location":"start_mining/announcement-mining/#what-does-overflow-mean","text":"When the ann handler receives an announcement, it puts it into a queue, when the queue fills up it responds overflow immediately. The queue can become long, so you may receive \"operation timed out\" you're still being paid, when you receive \"overflow\" you are not being paid. Unfortunately, you may also receive \"operation timed out\" because the handler is unresponsive, it's not obvious which is the reason from looking at the logs. For example, what you will see in the AnnMiner Logs: 1618394538 INFO annmine.rs:519 467 Ke/s 28.56Mb/s overflow: [0, 0, 3072, 0] uploading: [0, 0, 17632, 0] accept/reject: [26932/0, 0/0, 4856/0, 796/0] - goodrate: [100%, 100%, 61%, 100%] 467 Ke/s 467 kilo-encryptions (thousands of encryptions) per second of mining power. 28.56Mb/s Total upload bandwidth (to all pools - combined) overflow: [0, 0, 3072, 0] Overflowed the internal queue of the ann miner, before it was even able to upload to the pool, one number for each pool you're mining to. 3072 Number of anns which are not uploaded to pool #3. uploading [0, 0, 17632, 0] Number of anns currently in-flight in active http requests, again 3rd pool is a problem, others are doing well (in this example). accept/reject [26932/0, 0/0, 4856/0, 796/0] Anns accepted/rejected by each pool, these numbers are based on the previous 10 seconds, pool #2 is giving a zero accepted which might be an issue, keep watching the next message 10 seconds later for another update. goodrate [100%, 100%, 61%, 100%] Goodrate = number of anns accepted divided by number of anns produced.","title":"What does overflow mean?"},{"location":"start_mining/intro/","text":"Intro to PKT Mining \u00b6 DPKT is mined using the novel PacketCrypt bandwidth-hard mining algorithm which requires bandwidth to mine. Since PacketCrypt is a bandwidth hard proof of work, this means it requires lots of bandwidth to mine in combination with CPU power. Miners collaborate with one another by sending small messages (called Announcements) and the sending of these messages requires bandwidth. Miners get an advantage by working together. As more people mine PacketCrypt, they will need to invest in more network infrastructure which will become useful later on for making the internet more accessible, as well as operating VPN and empowering people to safely share wifi with their neighbors. In order to mine PKT you must first set up a PKT Wallet. You must use a PKT wallet that is compatible with mining. A mining wallet is required because PKT miners get paid every 60 seconds. As a result of getting paid 1,440 times per day (60 minutes per hour * 24 hours per day) each PKT wallet must have the ability to scale in order to support the amount of mining transactions. Learn how to set up a PKT Wallet [here]. Miners who are working in collaboration with one another are members of a mining pool, therefore all mining of PacketCrypt is done in pools. Mining PKT utilizes 2 distinct stages: announcement mining and block mining. Announcement Mining - Using your CPU to create Announcements Announcement Mining creates a small (1KB) message that is difficult to compress and proves work was done. Announcements are transmitted to and collected by block miners to form blocks. This simulates the transmission of data across the network. Announcement miners must maximize their CPU processing power and bandwidth upload speed for the highest yields. Announcement mining can be done from nearly any device that has a CPU processor and access to bandwidth. To learn more about announcement mining, click [here]. Block Mining - Collecting Announcements from Announcement Miners and using them to mine blocks. Block mining involves setting up a mining pool. PKT mining pools require expert networking experience, significant hardware and bandwidth infrastructure with a minimum of 25 gbps of bandwidth ingest. Block miners gain efficiency on the difficulty of the work, based on the amount of new announcements they have in memory at the time of mining. This incentivizes mining pools to pay announcement miners to supply announcements. Block mining is typically done at the mining pool's datacenter.","title":"Intro to PKT Mining"},{"location":"start_mining/intro/#intro-to-pkt-mining","text":"DPKT is mined using the novel PacketCrypt bandwidth-hard mining algorithm which requires bandwidth to mine. Since PacketCrypt is a bandwidth hard proof of work, this means it requires lots of bandwidth to mine in combination with CPU power. Miners collaborate with one another by sending small messages (called Announcements) and the sending of these messages requires bandwidth. Miners get an advantage by working together. As more people mine PacketCrypt, they will need to invest in more network infrastructure which will become useful later on for making the internet more accessible, as well as operating VPN and empowering people to safely share wifi with their neighbors. In order to mine PKT you must first set up a PKT Wallet. You must use a PKT wallet that is compatible with mining. A mining wallet is required because PKT miners get paid every 60 seconds. As a result of getting paid 1,440 times per day (60 minutes per hour * 24 hours per day) each PKT wallet must have the ability to scale in order to support the amount of mining transactions. Learn how to set up a PKT Wallet [here]. Miners who are working in collaboration with one another are members of a mining pool, therefore all mining of PacketCrypt is done in pools. Mining PKT utilizes 2 distinct stages: announcement mining and block mining. Announcement Mining - Using your CPU to create Announcements Announcement Mining creates a small (1KB) message that is difficult to compress and proves work was done. Announcements are transmitted to and collected by block miners to form blocks. This simulates the transmission of data across the network. Announcement miners must maximize their CPU processing power and bandwidth upload speed for the highest yields. Announcement mining can be done from nearly any device that has a CPU processor and access to bandwidth. To learn more about announcement mining, click [here]. Block Mining - Collecting Announcements from Announcement Miners and using them to mine blocks. Block mining involves setting up a mining pool. PKT mining pools require expert networking experience, significant hardware and bandwidth infrastructure with a minimum of 25 gbps of bandwidth ingest. Block miners gain efficiency on the difficulty of the work, based on the amount of new announcements they have in memory at the time of mining. This incentivizes mining pools to pay announcement miners to supply announcements. Block mining is typically done at the mining pool's datacenter.","title":"Intro to PKT Mining"},{"location":"start_mining/pkt-mining-pool/","text":"How to Setup a PKT Mining Pool \u00b6 Block Mining - Collecting Announcements from Announcement Miners and using them to mine blocks. Block mining involves setting up a mining pool. PKT mining pools require expert networking experience, significant hardware and bandwidth infrastructure with a minimum of 25 gbps of bandwidth ingest. Block miners gain efficiency on the difficulty of the work, based on the amount of new announcements they have in memory at the time of mining. This incentivizes mining pools to pay announcement miners to supply announcements. Block mining is typically done at the mining pool's datacenter. Mining \u00b6 PacketCrypt is a bandwidth hard proof of work , this means it requires lots of bandwidth to mine. Miners collaborate with one another by sending small messages (called Announcements ) and the sending of these messages requires a large amount of bandwidth . Miners who are working in collaboration with one another are members of a mining pool, therefore all mining of PacketCrypt is done in pools. PacketCrypt mining is split into two distinct stages: Announcement Mining - Using your CPU to create Announcements Block Mining - Collecting Announcements from Announcement Miners and using them to mine blocks Block mining is typically done at the mining pool's datacenter, however Announcement mining can be done from anywhere. How to Announcement mine \u00b6 There are a number of options available when it comes to installing the PacketCrpyt announcement miner. Choose whichever best suits your technical ability: 1. Install a Pre-built Binary \u00b6 Pre-built packetcrypt binaries (for linux) or installation packages (for macos) and archives (for windows) can be downloaded from packetcrypt releases page . For windows , download the zip archive suffixed with -windows.zip and extract its content. For macos , download the package suffixed with .pkg and click on its icon in the Finder for installation. For linux , download the binary suffixed with -linux_amd64 and rename it packetcrypt . If you're on Arch linux or Manjaro, you can install the packetcrypt AUR package 2. Deploy a Docker Image \u00b6 There is a PacketCrypt Docker image available, which can be used for announcement mining. To install: Download and install Docker for your operating system. Download the PacketCrypt Docker image: $ docker pull thomasjp0x42/packetcrypt There are also PacketCrypt Docker images built without the portable flag ( --no-portable ) which may increase the performance of the announcement mining while reducing CPU compatibility. One such image (compiled on AMD 5950x) is available at thomasjp0x42/packetcrypt-amd64 . Additionally, for ARM devices such as Raspberry Pi, there is an image available at thomasjp0x42/packetcrypt-arm64 . The arm64 image will also work on Apple silicon such as the M1 and M2 chips. Run the container similar to the commands described in the Begin Announcement Mining section, except replace this part of the command: $ packetcrypt with this command to run PacketCrypt from Docker: $ docker run thomasjp0x42/packetcrypt The final command will be formatted like this: $ docker run thomasjp0x42/packetcrypt ann -p More information can be found at the PacketCrypt DockerHub page 3. Build From Source \u00b6 Building from source will generally offer the best mining performance but requires more technical knowledge than the previous two options. First install rust if you haven't, see: rustup git clone https://github.com/cjdelisle/packetcrypt_rs cd packetcrypt_rs cargo build --release See the PacketCrypt GitHub repository for more detailed instructions. Begin Announcement Mining \u00b6 Important You cannot mine into the electrum wallet , You can only mine into the Command Line Wallet , the Pkt.World Wallet or the Mac GUI Wallet . To begin mining, you will need the address of your wallet and you will need to choose a pool. There are two ways to configure the announcement miner; by using CLI parameters or by using a configuration file: Using the CLI packetcrypt ann -p pool_1 [pool_2 pool_3 pool_4] [or for windows] packetcrypt.exe ann -p pool_1 [pool_2 pool_3 pool_4] Using a Configuration File A configuration file must be in JSON format. The file can be loaded from the local filesystem or from a web-accessible location. Any CLI parameters used will overide the corresponding settings in the configuration file. Example config.json: { \"payment_addr\": \"\", \"pools\": [ \"pool_1\", \"pool_2\", \"pool_3\", \"pool_4\" ] } packetcrypt ann -c \"./config.json\" [or] packetcrypt ann -c \"https://example.com/config.json\" [or for windows] packetcrypt.exe ann -c \"./config.json\" [or] packetcrypt.exe ann -c \"https://example.com/config.json\" Announcement mining can be done into a single pool or multiple pools. When you announcement mine into multiple pools, you will be paid by each pool that you submit announcements to. pool_1 is the pool running the highest difficulty. If you notice problems, you can test listing the pools in a different order. The number of pools you mine into is at your discretion. If a pool is down or malfunctioning you will notice the pool is not mining at [100%] in your mining feed and you can choose to remove the under-performing or malfunctioning pool. How to install a PKT miner on Mac \u00b6 Install the Zulu or CLI PKT Wallet from https://docs.pkt.cash Download the PacketCrypt.pkg for mac Open your Terminal Install Rust by entering in the command: $ curl --proto '=https' --tlsv1.2 -sSf * https://sh.rustup.rs | sh Press 1 to confirm Enter the command: $ sudo install make Enter the command: $ git clone https://github.com/cjdelisle/packetcrypt_rs Enter the command: $ cd packetcrypt_rs Enter the command: $ ~/.cargo/bin/cargo build --release Enter the command: $ ./target/release/packetcrypt ann -p [your PKT Wallet Address] [pool 1] [pool 2] [pool 3] [pool 4] Choosing Pools to mine in \u00b6 You can mine in as many pools as you have the bandwidth to supply. The same data will be uploaded so your CPU is only used once. Currently the pools which are regularly winning blocks include: Pkteer: http://pool.pkteer.com PKTPool: http://pool.pktpool.io PktWorld: http://pool.pkt.world Zetahash (f.k.a. Srizbi): https://stratum.zetahash.com In general the recommendation is to list the pool with highest difficulty in the first position to ensure your announcements will be accepted, as the standardized policy is to accept announcements of a higher difficulty for pools with a lower base difficulty. In some cases the rewards might vary depending on the pool order regardless of difficulty, subject to custom policies implemented by the respective pools. (Check the relevant channels on Discord for current pool statuses) You should test your daily earnings on each pool to see which one is best. Your mining revenue depends on how much each pool allocates towards announcement miners as well as how much hardware they are using in-house. The pools are winning different blocks and if you mine to just one pool, your not getting any payment from the others when they win a block. It's the same with mining to a pool that is not winning any blocks. Limiting System Resource Usage \u00b6 Limiting the system resources available to Packetcrypt may negatively effect your mining power but can be useful to conserve resources for other processess. Limit CPU Usage \u00b6 Announcement mining is a resource intensive process. By default, Packetcrypt will use 100% of the available CPU resources. CPU usage can be limited by assigning a limited number of threads to packetcrypt using the -t CLI parameter or \"threads\" key if using a configuration file. Example of assigning four (4) threads to Packetcrypt: packetcrypt ann -p pool_1 [pool_2 pool_3 pool_4] -t 4 or { \"threads\" 4 } Limit Bandwidth Usage \u00b6 Bandwidth usage is directly related to two main factors: 1 - Mining difficulty of the primary pool (the first pool listed in Packetcrypt pool configuration) A lower difficulty means higher bandwidth usage 2 - The number of pools mined Packetcrypt will send the same Announcements to each pool mined Bandwidth usage can therefore be limited by selecting a higher difficulty pool as the primary pool and/or by mining to fewer pools. Block Mining & Running a Pool \u00b6 Because each block miner must use as much bandwidth as all of the announcement miners combined , block mining is typically done at the location of the pool. Even a pool operator who wanted to support external block mining would find that the pool itself would need enough upload bandwidth to match all of the block miners - which would be completely untenable. If you are interested in block mining, contact the pool operator and discuss sending hardware to their location. Starting your own pool requires setting up a number of services: pktd node (one or more) - One pktd instance is required for the Master to function, each of the Block Handlers may optionally use separate pktd nodes. Master (one) - This node coordinates all of the others and provides work files and configuration Ann Handler (one or more) - These are high performance nodes which accept announcements from the announcement miners in the network, they also provide announcements to the block miners. As you scale up the amount of bandwidth in the pool, you will need to add more Ann handlers. Block Miner (one or more) - These nodes download announcements from the announcement handlers and use them in the mining process to mine blocks. Block Handlers (one or more) - These nodes receive \"block shares\" from the block miners and submit blocks if Paymaker (1) - This node receives updates from the Ann Handlers and Block Handlers and keeps track of who should be paid. The Paymaker sends configuration to the pktd node which is used by the Master in order to make the pool pay out the announcement and block miners PacketCrypt Data Flow \u00b6 \u2588 Orange: Announcements are sent from the Announcement miners to the Ann Handlers and then to the Block miners \u2588 Blue: Block shares are sent from block miners to Block Handler(s) \u2588 Purple: Winning blocks are submitted by the Block Handler(s) to pktd and the PKT network \u2588 Pink: Block Handlers and Ann Handlers inform Paymaker of work done by announcement and block miners \u2588 Green: Paymaker configures pktd instance to create blocks which pay the people who have been mining \u2588 Brown: Master gets block templates from pktd instance Black dotted line: All nodes request configuration and block templates from Master node More Information and PacketCrypt Pool Code \u00b6 The code and documentation for running a pool is available on the C / nodejs version of the PacketCrypt project, the new Rust version only contains Announcement Miner and Announcement Handlers. Announcement Difficulty \u00b6 PacketCrypt is designed in such a way that a mining pool can double its effective power by: Doubling the total block mining computation effort Doubling the total announcement mining computation effort, or Doubling the amount of bandwidth between announcement miners and the pool The way that a pool operator limits the amount of bandwidth flowing into the pool, to prevent overloading of the network, is by setting what is known as the announcement difficulty . The announcement difficulty for a pool specifies how much work must be done on an announcement in order for the announcement to be accepted and paid out by the pool. Announcement difficulty serves to slow down the announcement miners to protect the pool's network. In general, doubling the announcement difficulty will halve the amount of bandwidth used by the pool and will also halve the pool's overall mining power, with a limit that setting the announcement difficulty lower than 2 does not bring any additional value. To explain why it works like this, we need to examine the PacketCrypt algorithm rules and the in particular how the block mining software decides which announcements to use when attempting to mine a block. Announcement Set Selection \u00b6 PacketCrypt algorithm allows block miners to perform less work if they are able to prove that they had a certain number of \"high value\" announcements in memory at the time of mining, the exact ratio of actual work a block miner must do to the amount of work the PKT blockchain requires is called the power multipler . For a block miner seeking to optimize their power multiplier, every announcement has a particular level of utility value which is based on the amount of work that was done by the announcement miner (announcement difficulty) and how old the announcement is. We call this the effective difficulty . The effective difficulty of an announcement starts off as the actual difficulty of the work done to mine it and then decreases by half every block-period until it is less than 1 and the announcement is no longer usable for mining. The block mining software selects a subset of announcements which which will give it the best power multiplier based on the PacketCrypt algorithm: power_multiplier = min(effective_difficulty) * ann_count ** 2 The min(effective_difficulty) is the effective difficulty of the \"least valuable\" announcement that is being mined with. Lets assume that announcement miners are providing a steady supply of 1000 announcements per block-period and all announcements have an initial announcement difficulty of 128. The block mining software can choose to mine with 1000 announcements at 128 effective difficulty, or with 2000 announcements at 64 effective difficulty, or with 3000 announcements at 32 effective difficulty and so on. The best choice is to use the previous three block periods which provides a power multiplier that is 225% higher than that of using just the most recent 1 period worth of announcements. This curve is the same no matter what difficulty we are starting with. Optimal Difficulty Curve \u00b6 Knowing that the optimal announcement set is all of those announcements mined over the past 3 block periods, we can compute the overall power of a pool as the announcement difficulty is raised. At announcement difficulty 1, announcements cannot be used for more than 1 block, but if we imagine that the announcement mining community can produce 1000 announcements per block at difficulty 1 then we can reason that the power multiplier will be 1000 ** 2 or 1 million. At difficulty 2 we can expect the announcement miners will produce 500 announcements per block period but since 2 block periods can be used, the power multiplier is the same. At difficulty 4, the announcement miners will produce 250 announcements per block period and they will be valid for 3 block periods making the power multiplier 750 ** 2 or 562,500. From here, the power output of the power multiplier of the optimal announcement set halves for each doubling of the announcement difficulty, making the optimal difficulty 2 . FAQ for ANN Miners \u00b6 What does overflow mean? \u00b6 When the ann handler receives an announcement, it puts it into a queue, when the queue fills up it responds overflow immediately. The queue can become long, so you may receive \"operation timed out\" you're still being paid, when you receive \"overflow\" you are not being paid. Unfortunately, you may also receive \"operation timed out\" because the handler is unresponsive, it's not obvious which is the reason from looking at the logs. For example, what you will see in the AnnMiner Logs: 1618394538 INFO annmine.rs:519 467 Ke/s 28.56Mb/s overflow: [0, 0, 3072, 0] uploading: [0, 0, 17632, 0] accept/reject: [26932/0, 0/0, 4856/0, 796/0] - goodrate: [100%, 100%, 61%, 100%] 467 Ke/s 467 kilo-encryptions (thousands of encryptions) per second of mining power. 28.56Mb/s Total upload bandwidth (to all pools - combined) overflow: [0, 0, 3072, 0] Overflowed the internal queue of the ann miner, before it was even able to upload to the pool, one number for each pool you're mining to. 3072 Number of anns which are not uploaded to pool #3. uploading [0, 0, 17632, 0] Number of anns currently in-flight in active http requests, again 3rd pool is a problem, others are doing well (in this example). accept/reject [26932/0, 0/0, 4856/0, 796/0] Anns accepted/rejected by each pool, these numbers are based on the previous 10 seconds, pool #2 is giving a zero accepted which might be an issue, keep watching the next message 10 seconds later for another update. goodrate [100%, 100%, 61%, 100%] Goodrate = number of anns accepted divided by number of anns produced. Setting up a Pool \u00b6 Expectations \u00b6 General knowledge of Linux General knowledge of git General knowledge of networking General knowledge of blockchain Access to at least 6 machines running Ubuntu 18.04 LTS or 20.04 LTS , to deploy the following services. Machine 1 : PKT node Machine 2 : Master, Paymaker & Blkhander Machine 3 : AnnHandler Machine 4 : AnnHandler Machine 5 : BlkMiner Machine 6 : BlkMiner Note: It can be done all on a single machine, you just need to pay attention to ports etc. As of June 2022, the network difficulty is high, and given that half of the work is done at pool premises, it's recommended to run at least a dozen BlkMiner machines, with a significant (768GB recommended) ammount of RAM. Block mining & running a pool \u00b6 Starting your own pool requires setting up a number of services: pktd node (one or more) - One pktd instance is required for the Master to function, each of the Block Handlers may optionally use separate pktd nodes. Master (one) - This node coordinates all of the others and provides work files and configuration Ann Handler (two or more) - These are nodes which accept announcements from the announcement miners in the network, they also provide announcements to the block miners. As you scale up the amount of bandwidth in the pool, you will need to add more Ann handlers. Block Miner (two or more) - These high performance nodes download announcements from the announcement handlers and use them in the mining process to mine blocks. Block Handlers (one or more) - These nodes receive \"block shares\" from the block miners and submit blocks if they validate the share Paymaker (one) - This node receives updates from the Ann Handlers and Block Handlers and keeps track of who should be paid. The Paymaker sends configuration to the pktd node which is used by the Master in order to make the pool pay out the announcement and block miners General Information \u00b6 Repository Information: \u00b6 The following repositories hold the required programs to run a pool: Repository Tools packetcrypt_rs: https://github.com/cjdelisle/packetcrypt_rs AnnHandler, Blkminer, AnnMiner PacketCrypt: https://github.com/cjdelisle/PacketCrypt/ Master, Paymaker, BlkHandler pktd: https://github.com/pkt-cash/pktd pktd Assumed network Ranges: \u00b6 In this guide we have two separate networks, the public network (198.51.100.0/24), and local network (10.0.16.0/24) to connect AnnHandlers and BlkMiner. Machine Public Network IP Private Network IP Machine 1 198.51.100.1 10.0.16.1 Machine 2 198.51.100.2 10.0.16.2 Machine 3 198.51.100.3 10.0.16.3 Machine 4 198.51.100.4 10.0.16.4 Machine 5 X 10.0.16.5 Machine 6 X 10.0.16.6 Assumed Port Ranges: \u00b6 Service Machine Port/Port Ranges Master Machine 2 8080 Paymaker Machine 2 8081 BlkHandlers Machine 2 8100-8200 AnnHandlers Machine 3 & 4 80 Installation \u00b6 Machine 1 \u00b6 PKTD node: \u00b6 150GB of storage is required at a minimum to run the pktd node. Recommended size is around 250GB of NVMe storage. Install Golang sudo add-apt-repository ppa:longsleep/golang-backports sudo apt update sudo apt install golang-go Install git sudo apt install git Install the pktd node git clone --branch develop https://github.com/pkt-cash/pktd cd pktd ./do The output should show the following: Everything looks good - use ./bin/pktd to launch Machine 2 \u00b6 Master | Paymaker | BlkHandler: \u00b6 Install the required tools: cd ~ sudo add-apt-repository universe sudo apt install git sudo apt install make sudo apt install npm sudo npm cache clean -f sudo npm install -g n sudo n stable Restart your shell ### Add here how to get latest stable version of node Clone the source code: git clone --branch master https://github.com/cjdelisle/PacketCrypt Build the PacketCrypt code cd PacketCrypt npm install Machine 4 - 6 \u00b6 BlkMiner | AnnHandler | AnnMiner: \u00b6 Install the Required tools: sudo apt install gcc git sudo apt install curl curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh Clone packetcrypt_rs git clone --branch develop https://github.com/cjdelisle/packetcrypt_rs Compile PacketCrypt cd packetcrypt_rs ~/.cargo/bin/cargo build --release --features jemalloc Config of pool.js \u00b6 Information: pool.js is located at: ~/PacketCrypt/pool.example.js You need to edit this file, then run: cp ~/PacketCrypt/pool.example.js ~/PacketCrypt/pool.js config.privateSeed \u00b6 Signing of announcements is rarely used, it breaks people mining into multiple pools, and you should set it to null unless \"you know what you're doing\" This seed is used for deriving keys which will be used for signing announcements. Setting this value to an alphanumeric value e.g oHk8TXpbtRRZGtaYYMnIFAzYMrVh6vA8XzKWWXcKbzCThuFLIJ234bHN5peddQFzR2TtQyo58gcFRP7bKg9BeXZirSqp9gVpjBWp In general, this value should be set to the null, as signing announcements is rarely used, and breaks Announcement mining with multiple pools if you have your pool externally accessable, and should only be set if you have a strong understanding and knowledge of what you are doing. config.privateSeed = null If you aren't bothered by, or don't require your announcements to be signed . config.paymakerHttpPasswd \u00b6 Anyone who has this password can make http posts to the paymaker (claim that shares were won) You should make this random and also firewall the paymaker from the public. The upload will be done using Authorization Basic with a username of \"x\" and this as the password config.paymakerHttpPasswd = 'anyone with this password can post results to the paymaker'; You can put the paymaker behind an http proxy if you wish. config.masterUrl \u00b6 This is used by the paymaker and block handler when running them with pool.js, it is used to resolve where the master is. You can either set this as a locally host or put your master behind a nginx proxy config.masterUrl = 'http://localhost:8080'; or if you have your instance public, and you want to have it be resolvable publically, replace the url with your own. config.masterUrl = 'http://pool.pktpool.io'; config.rpc \u00b6 The username and password set here, should be the same username and password used at the end of this guide for when you configure the pktd service. user: 'x', pass: 'x', config.annHandlers \u00b6 Information: config.annHandlers is a list of json object, with an object for each individual annhandler you would like to run, each ann handler will require it's own individual port. As the AnnHandler will be run on the same machine as the BlkMiner you need to make sure there are no over-lapping port bindings. If you plan to allow external AnnMiners (AnnMiners not on your LAN to mine against your pool, the url's placed in the AnnHandlers list, should be externally resolvable. The address that is advertized for accessing this ann handler (external address) If running locally use: url: 'http://10.0.16.3:8081','http://10.0.16.4:8081' If allowing external annminers use a resolved address such as: url: 'http://ann1.pktpool.io','http://ann2.pktpool.io' Replace the url with your own. config.blkHandlers \u00b6 Information: config.blkHandlers is a list of json object, with an object for each individual annhandler you would like to run, each ann handler will require it's own individual port. BlockHandlers are low-effort high-volume single-threaded workers. What address should be advertized for accessing this BlkHander, again make sure there are no overlapping ports. If you are wanting to support external blockminers, this address should be externally resolvable url: 'http://localhost:8100', This is the port that the blkHandler will bind to. port: 8082, This is the host that the blkHandler will bind to. host: '::', This is how many requests a blkHandler can queue before the handler starts rejecting requests maxConnections: 50, root: config config.master \u00b6 Which port to run the master on port: 8080, What address to bind to, set to localhost if proxying host: '::', Minimum work for an announcement. This number is effectively a bandwidth divisor, every time you double this number you will reduce your bandwidth by a factor of two. annMinWork: Util.annWorkToTarget(128), Average number of shares per block, reducing this number will reduce load on your block handlers, but increasing it will allow payment to be spread more evenly between block miners. This wants to be set to a higher number than one, for the purpose of constantly testing that the block miners are making valid shares. You may have a block miner sitting for hours without a share and then when it wins one, it can become invalid because of misconfiguration shareWorkDivisor: 4, Which versions of announcements we will accept annVersions: [1], Request that ann miners mine announcements that are this many blocks old. Announcements contain a commitment of the most recent block hash but they need 3 blocks to \"mature\" before they can be used The point of this is so that PacketCrypt is about bandwidth, not latency. But there is a risk: If there is a surge then you are going to be starved for announcements When you are starved, you will have few usable anns which causes a slow-down in mining and the announcements which are being submitted are not usable. When you win a few blocks, those announcements become usable and you surge, which causes you to go back into starvation again. This should be set to either: 0 Which means the announcements you are receiving are used instantly 3 Which means you are waiting for the announcements to mature before using them. If running your own AnnMiners, it is advisable to set this to 0, and add the --mineold 3 to some of your AnnMiner startups on the CLI. This helps to keep a balance between keeping your pool as powerful as possible, along with having AnnMiners to help out in the case of a starvation mineOldAnns: 0, config.payMaker \u00b6 How the miners should access the paymaker (external address), replace the url with your own. url: 'pool.pktpool.io', Which port to run the paymaker on port: 8081, What address to bind to, set to localhost if proxying host: '::', Seconds between sending updates to pktd. If this set to zero, the payMaker will accept log uploads but will not send any changes of payout data to pktd. updateCycle: 120, updateCycle: 0 to disable How many seconds backward to keep history in memory historyDepth: 60 * 60 * 24 * 30, Maximum number of simultanious connections to accept before sending 500 errors maxConnections: 200, annCompressor \u00b6 Store data in 1 minute aggregations timespanMs: 1000 * 60, Allow data to be submitted to any of the last 10 aggregations slotsToKeepEvents: 10, What fraction of the payout to pay to block miners (the rest will be paid to ann miners) ( Pay per last N shares ) blockPayoutFraction: 0.5, What percent of the total winnings should be taken for pool management poolFee: 0.40, The address which should be paid the pool fee poolFeeAddress: \"pkt1qyc9dkhca7uc84zn3vlgd0h0fxr3twwn34qgeqe\", This constant will affect how far back into history we pay our announcement miners ( Pay per last N shares ) pplnsAnnConstantX: 0.125, This constant will affect how far back into history we pay our block miners ( Pay per last N shares ) pplnsBlkConstantX: 2, When there are not enough shares to fairly spread out the winnings, pay what is left over to this address. defaultAddress: \"pkt1q6hqsqhqdgqfd8t3xwgceulu7k9d9w5t2amath0qxyfjlvl3s3u4sjza2g2\", When something goes wrong, direct pktd to send all coins here, if this is different from the defaultAddress then it is possible to account for and pay out to the miners later when the problem is fixed. errorAddress: \"pkt1q6hqsqhqdgqfd8t3xwgceulu7k9d9w5t2amath0qxyfjlvl3s3u4sjza2g2\", Config of pool.toml \u00b6 Information: - pool.example.toml is located at: ~/packetcrypt_rs/pool.example.toml - You need to edit this file, then run: ~/packetcrypt_rs/pool.example.toml ~/packetcrypt_rs/pool.toml Password used by your paymaker to post logs for payment, the same as config.paymakerHttpPasswd paymaker_http_password = \"you'll want this to be a secret\" URL of the pool master, used for getting configuration and work, the same as: Replace the url with your own. master_url = \"http://pool.pktpool.io\" ann_handler.ah* \u00b6 You can have multiple ann_handlers, you can do this by defining each one such as: [ann_handler.ah0] \"parameters\" [ann_handler.ah1] \"parameters\" These can all be in a single file to be used by each annhandler, when starting the annhandlers, you would start them with on each respective machine: packetcrypt ah --config /path/to/config.toml ah0 packetcrypt ah --config /path/to/config.toml ah1 Number of threads to dedicate to the AnnHandler num_workers = 8 Length of the input queue, keeping this low will create back-pressure and prevent miners from posting too many announcements when the server is in fact overloaded input_queue_len = 256 The public url of the annhandler, this should match what is set in your pool.js Replace the url with your own. public_url = \"http://ann1.pktpool.io/submit\" Bind to this port bind_port = \"198.51.100.3:80\" Bind this port to the sprayer component bind_pvt = \"10.0.16.3:6666\" Set sprayer spray_at = [\"239.0.1.1:6667\"] spray_workers = 8 For Machine 3 you should end up with something like this [ann_handler.ah0] block_miner_passwd = \"no one steals my anns\" skip_check_chance = 0 num_workers = 8 input_queue_len = 512 public_url = \"http://ann1.pktpool.io/submit\" bind_pub = \"198.51.100.3:80\" bind_pvt = \"10.0.16.3:6666\" spray_at = [\"239.0.1.1:6667\"] spray_workers = 8 subscribe_to = [] files_to_keep = 512 The same logic should be followed for Machine 4 and other handlers you may have. NOTE: To bind low ports with non-root user run: \u00b6 sudo setcap CAP_NET_BIND_SERVICE=+eip $(which packetcrypt) Running Manually \u00b6 Machine 1 \u00b6 Information: These tasks need to be run in the order they are presented PKTD needs to have downloaded the full chain first, you will know when the node is upto date when height is equal to the current block on the explorer It can take 12+ hours to fully sync to the current block height PKTD \u00b6 --rpcuser and --rpcpass should match the values set in pool.js under config.rpc ./pktd/bin/pktd --rpcuser=XXX --rpcpass=XXX --miningaddr Machine 2 \u00b6 Master \u00b6 node ./pool.js --master Paymaker \u00b6 node ./pool.js --payMaker BlkHandler(s) \u00b6 Launch the BlkHandler nodes, specify --blk0 for the first BlkHandler , --blk1 for the second, and so forth cd PacketCrypt node ./pool.js --blk0 node ./pool.js --blk1 Machine 3 \u00b6 AnnHandler \u00b6 cd packetcrypt_rs ./target/release/packetcrypt ah --config /path/to/pool.toml ah0 Machine 4 \u00b6 AnnHandler \u00b6 cd packetcrypt_rs ./targer/release/packetcrypt ah --config /path/to/pool.toml ah1 Machine 5 and 6 \u00b6 BlkMiner \u00b6 --threads is the number of threads you want to dedicate to the Blkminer, the default is to use all available threads. --paymentaddr is the wallet you want your coins to be mined into, it is advisable to not use the electrum wallet for this. --memorysizemb is how much RAM you are allocating to block mining, Ideally you want to set as much as you can. is the masterUrl of your pool cd packetcrypt_rs ./target/release/packetcrypt blk --paymentaddr --threads 80 --memorysizemb 665000 --handlerpass NoOneStealsMyAnns --subscribe 10.0.16.3:6666 --bind 0.0.0.0:6667 --mcast 239.0.1.1 NGINX Setup (For allowing external AnnMining) \u00b6 Machine 2 \u00b6 Update system and install Nginx sudo apt update sudo apt install nginx Unlink default nginx site unlink /etc/nginx/sites-enabled/default cd /etc/nginx/sites-available Create and edit the reverse-proxy.conf file vim reverse-proxy.conf The config for the services: server { listen 80; listen [::]:80; server_name ; location / { proxy_pass http://localhost:8080/; } } server { listen 80; listen [::]:80; server_name paymaker.pktpool.io; location / { proxy_pass http://localhost:8081/; } } Link new file to sites-enabled ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/reverse-proxy.conf Remove default config rm default Check reverse proxy config is correct nginx -t Reload nginx to pick up config changes. sudo systemctl reload nginx","title":"How to Setup a PKT Mining Pool"},{"location":"start_mining/pkt-mining-pool/#how-to-setup-a-pkt-mining-pool","text":"Block Mining - Collecting Announcements from Announcement Miners and using them to mine blocks. Block mining involves setting up a mining pool. PKT mining pools require expert networking experience, significant hardware and bandwidth infrastructure with a minimum of 25 gbps of bandwidth ingest. Block miners gain efficiency on the difficulty of the work, based on the amount of new announcements they have in memory at the time of mining. This incentivizes mining pools to pay announcement miners to supply announcements. Block mining is typically done at the mining pool's datacenter.","title":"How to Setup a PKT Mining Pool"},{"location":"start_mining/pkt-mining-pool/#mining","text":"PacketCrypt is a bandwidth hard proof of work , this means it requires lots of bandwidth to mine. Miners collaborate with one another by sending small messages (called Announcements ) and the sending of these messages requires a large amount of bandwidth . Miners who are working in collaboration with one another are members of a mining pool, therefore all mining of PacketCrypt is done in pools. PacketCrypt mining is split into two distinct stages: Announcement Mining - Using your CPU to create Announcements Block Mining - Collecting Announcements from Announcement Miners and using them to mine blocks Block mining is typically done at the mining pool's datacenter, however Announcement mining can be done from anywhere.","title":"Mining"},{"location":"start_mining/pkt-mining-pool/#how-to-announcement-mine","text":"There are a number of options available when it comes to installing the PacketCrpyt announcement miner. Choose whichever best suits your technical ability:","title":"How to Announcement mine"},{"location":"start_mining/pkt-mining-pool/#1-install-a-pre-built-binary","text":"Pre-built packetcrypt binaries (for linux) or installation packages (for macos) and archives (for windows) can be downloaded from packetcrypt releases page . For windows , download the zip archive suffixed with -windows.zip and extract its content. For macos , download the package suffixed with .pkg and click on its icon in the Finder for installation. For linux , download the binary suffixed with -linux_amd64 and rename it packetcrypt . If you're on Arch linux or Manjaro, you can install the packetcrypt AUR package","title":"1. Install a Pre-built Binary"},{"location":"start_mining/pkt-mining-pool/#2-deploy-a-docker-image","text":"There is a PacketCrypt Docker image available, which can be used for announcement mining. To install: Download and install Docker for your operating system. Download the PacketCrypt Docker image: $ docker pull thomasjp0x42/packetcrypt There are also PacketCrypt Docker images built without the portable flag ( --no-portable ) which may increase the performance of the announcement mining while reducing CPU compatibility. One such image (compiled on AMD 5950x) is available at thomasjp0x42/packetcrypt-amd64 . Additionally, for ARM devices such as Raspberry Pi, there is an image available at thomasjp0x42/packetcrypt-arm64 . The arm64 image will also work on Apple silicon such as the M1 and M2 chips. Run the container similar to the commands described in the Begin Announcement Mining section, except replace this part of the command: $ packetcrypt with this command to run PacketCrypt from Docker: $ docker run thomasjp0x42/packetcrypt The final command will be formatted like this: $ docker run thomasjp0x42/packetcrypt ann -p More information can be found at the PacketCrypt DockerHub page","title":"2. Deploy a Docker Image"},{"location":"start_mining/pkt-mining-pool/#3-build-from-source","text":"Building from source will generally offer the best mining performance but requires more technical knowledge than the previous two options. First install rust if you haven't, see: rustup git clone https://github.com/cjdelisle/packetcrypt_rs cd packetcrypt_rs cargo build --release See the PacketCrypt GitHub repository for more detailed instructions.","title":"3. Build From Source"},{"location":"start_mining/pkt-mining-pool/#begin-announcement-mining","text":"Important You cannot mine into the electrum wallet , You can only mine into the Command Line Wallet , the Pkt.World Wallet or the Mac GUI Wallet . To begin mining, you will need the address of your wallet and you will need to choose a pool. There are two ways to configure the announcement miner; by using CLI parameters or by using a configuration file: Using the CLI packetcrypt ann -p pool_1 [pool_2 pool_3 pool_4] [or for windows] packetcrypt.exe ann -p pool_1 [pool_2 pool_3 pool_4] Using a Configuration File A configuration file must be in JSON format. The file can be loaded from the local filesystem or from a web-accessible location. Any CLI parameters used will overide the corresponding settings in the configuration file. Example config.json: { \"payment_addr\": \"\", \"pools\": [ \"pool_1\", \"pool_2\", \"pool_3\", \"pool_4\" ] } packetcrypt ann -c \"./config.json\" [or] packetcrypt ann -c \"https://example.com/config.json\" [or for windows] packetcrypt.exe ann -c \"./config.json\" [or] packetcrypt.exe ann -c \"https://example.com/config.json\" Announcement mining can be done into a single pool or multiple pools. When you announcement mine into multiple pools, you will be paid by each pool that you submit announcements to. pool_1 is the pool running the highest difficulty. If you notice problems, you can test listing the pools in a different order. The number of pools you mine into is at your discretion. If a pool is down or malfunctioning you will notice the pool is not mining at [100%] in your mining feed and you can choose to remove the under-performing or malfunctioning pool.","title":"Begin Announcement Mining"},{"location":"start_mining/pkt-mining-pool/#how-to-install-a-pkt-miner-on-mac","text":"Install the Zulu or CLI PKT Wallet from https://docs.pkt.cash Download the PacketCrypt.pkg for mac Open your Terminal Install Rust by entering in the command: $ curl --proto '=https' --tlsv1.2 -sSf * https://sh.rustup.rs | sh Press 1 to confirm Enter the command: $ sudo install make Enter the command: $ git clone https://github.com/cjdelisle/packetcrypt_rs Enter the command: $ cd packetcrypt_rs Enter the command: $ ~/.cargo/bin/cargo build --release Enter the command: $ ./target/release/packetcrypt ann -p [your PKT Wallet Address] [pool 1] [pool 2] [pool 3] [pool 4]","title":"How to install a PKT miner on Mac"},{"location":"start_mining/pkt-mining-pool/#choosing-pools-to-mine-in","text":"You can mine in as many pools as you have the bandwidth to supply. The same data will be uploaded so your CPU is only used once. Currently the pools which are regularly winning blocks include: Pkteer: http://pool.pkteer.com PKTPool: http://pool.pktpool.io PktWorld: http://pool.pkt.world Zetahash (f.k.a. Srizbi): https://stratum.zetahash.com In general the recommendation is to list the pool with highest difficulty in the first position to ensure your announcements will be accepted, as the standardized policy is to accept announcements of a higher difficulty for pools with a lower base difficulty. In some cases the rewards might vary depending on the pool order regardless of difficulty, subject to custom policies implemented by the respective pools. (Check the relevant channels on Discord for current pool statuses) You should test your daily earnings on each pool to see which one is best. Your mining revenue depends on how much each pool allocates towards announcement miners as well as how much hardware they are using in-house. The pools are winning different blocks and if you mine to just one pool, your not getting any payment from the others when they win a block. It's the same with mining to a pool that is not winning any blocks.","title":"Choosing Pools to mine in"},{"location":"start_mining/pkt-mining-pool/#limiting-system-resource-usage","text":"Limiting the system resources available to Packetcrypt may negatively effect your mining power but can be useful to conserve resources for other processess.","title":"Limiting System Resource Usage"},{"location":"start_mining/pkt-mining-pool/#limit-cpu-usage","text":"Announcement mining is a resource intensive process. By default, Packetcrypt will use 100% of the available CPU resources. CPU usage can be limited by assigning a limited number of threads to packetcrypt using the -t CLI parameter or \"threads\" key if using a configuration file. Example of assigning four (4) threads to Packetcrypt: packetcrypt ann -p pool_1 [pool_2 pool_3 pool_4] -t 4 or { \"threads\" 4 }","title":"Limit CPU Usage"},{"location":"start_mining/pkt-mining-pool/#limit-bandwidth-usage","text":"Bandwidth usage is directly related to two main factors: 1 - Mining difficulty of the primary pool (the first pool listed in Packetcrypt pool configuration) A lower difficulty means higher bandwidth usage 2 - The number of pools mined Packetcrypt will send the same Announcements to each pool mined Bandwidth usage can therefore be limited by selecting a higher difficulty pool as the primary pool and/or by mining to fewer pools.","title":"Limit Bandwidth Usage"},{"location":"start_mining/pkt-mining-pool/#block-mining-running-a-pool","text":"Because each block miner must use as much bandwidth as all of the announcement miners combined , block mining is typically done at the location of the pool. Even a pool operator who wanted to support external block mining would find that the pool itself would need enough upload bandwidth to match all of the block miners - which would be completely untenable. If you are interested in block mining, contact the pool operator and discuss sending hardware to their location. Starting your own pool requires setting up a number of services: pktd node (one or more) - One pktd instance is required for the Master to function, each of the Block Handlers may optionally use separate pktd nodes. Master (one) - This node coordinates all of the others and provides work files and configuration Ann Handler (one or more) - These are high performance nodes which accept announcements from the announcement miners in the network, they also provide announcements to the block miners. As you scale up the amount of bandwidth in the pool, you will need to add more Ann handlers. Block Miner (one or more) - These nodes download announcements from the announcement handlers and use them in the mining process to mine blocks. Block Handlers (one or more) - These nodes receive \"block shares\" from the block miners and submit blocks if Paymaker (1) - This node receives updates from the Ann Handlers and Block Handlers and keeps track of who should be paid. The Paymaker sends configuration to the pktd node which is used by the Master in order to make the pool pay out the announcement and block miners","title":"Block Mining & Running a Pool"},{"location":"start_mining/pkt-mining-pool/#packetcrypt-data-flow","text":"\u2588 Orange: Announcements are sent from the Announcement miners to the Ann Handlers and then to the Block miners \u2588 Blue: Block shares are sent from block miners to Block Handler(s) \u2588 Purple: Winning blocks are submitted by the Block Handler(s) to pktd and the PKT network \u2588 Pink: Block Handlers and Ann Handlers inform Paymaker of work done by announcement and block miners \u2588 Green: Paymaker configures pktd instance to create blocks which pay the people who have been mining \u2588 Brown: Master gets block templates from pktd instance Black dotted line: All nodes request configuration and block templates from Master node","title":"PacketCrypt Data Flow"},{"location":"start_mining/pkt-mining-pool/#more-information-and-packetcrypt-pool-code","text":"The code and documentation for running a pool is available on the C / nodejs version of the PacketCrypt project, the new Rust version only contains Announcement Miner and Announcement Handlers.","title":"More Information and PacketCrypt Pool Code"},{"location":"start_mining/pkt-mining-pool/#announcement-difficulty","text":"PacketCrypt is designed in such a way that a mining pool can double its effective power by: Doubling the total block mining computation effort Doubling the total announcement mining computation effort, or Doubling the amount of bandwidth between announcement miners and the pool The way that a pool operator limits the amount of bandwidth flowing into the pool, to prevent overloading of the network, is by setting what is known as the announcement difficulty . The announcement difficulty for a pool specifies how much work must be done on an announcement in order for the announcement to be accepted and paid out by the pool. Announcement difficulty serves to slow down the announcement miners to protect the pool's network. In general, doubling the announcement difficulty will halve the amount of bandwidth used by the pool and will also halve the pool's overall mining power, with a limit that setting the announcement difficulty lower than 2 does not bring any additional value. To explain why it works like this, we need to examine the PacketCrypt algorithm rules and the in particular how the block mining software decides which announcements to use when attempting to mine a block.","title":"Announcement Difficulty"},{"location":"start_mining/pkt-mining-pool/#announcement-set-selection","text":"PacketCrypt algorithm allows block miners to perform less work if they are able to prove that they had a certain number of \"high value\" announcements in memory at the time of mining, the exact ratio of actual work a block miner must do to the amount of work the PKT blockchain requires is called the power multipler . For a block miner seeking to optimize their power multiplier, every announcement has a particular level of utility value which is based on the amount of work that was done by the announcement miner (announcement difficulty) and how old the announcement is. We call this the effective difficulty . The effective difficulty of an announcement starts off as the actual difficulty of the work done to mine it and then decreases by half every block-period until it is less than 1 and the announcement is no longer usable for mining. The block mining software selects a subset of announcements which which will give it the best power multiplier based on the PacketCrypt algorithm: power_multiplier = min(effective_difficulty) * ann_count ** 2 The min(effective_difficulty) is the effective difficulty of the \"least valuable\" announcement that is being mined with. Lets assume that announcement miners are providing a steady supply of 1000 announcements per block-period and all announcements have an initial announcement difficulty of 128. The block mining software can choose to mine with 1000 announcements at 128 effective difficulty, or with 2000 announcements at 64 effective difficulty, or with 3000 announcements at 32 effective difficulty and so on. The best choice is to use the previous three block periods which provides a power multiplier that is 225% higher than that of using just the most recent 1 period worth of announcements. This curve is the same no matter what difficulty we are starting with.","title":"Announcement Set Selection"},{"location":"start_mining/pkt-mining-pool/#optimal-difficulty-curve","text":"Knowing that the optimal announcement set is all of those announcements mined over the past 3 block periods, we can compute the overall power of a pool as the announcement difficulty is raised. At announcement difficulty 1, announcements cannot be used for more than 1 block, but if we imagine that the announcement mining community can produce 1000 announcements per block at difficulty 1 then we can reason that the power multiplier will be 1000 ** 2 or 1 million. At difficulty 2 we can expect the announcement miners will produce 500 announcements per block period but since 2 block periods can be used, the power multiplier is the same. At difficulty 4, the announcement miners will produce 250 announcements per block period and they will be valid for 3 block periods making the power multiplier 750 ** 2 or 562,500. From here, the power output of the power multiplier of the optimal announcement set halves for each doubling of the announcement difficulty, making the optimal difficulty 2 .","title":"Optimal Difficulty Curve"},{"location":"start_mining/pkt-mining-pool/#faq-for-ann-miners","text":"","title":"FAQ for ANN Miners"},{"location":"start_mining/pkt-mining-pool/#what-does-overflow-mean","text":"When the ann handler receives an announcement, it puts it into a queue, when the queue fills up it responds overflow immediately. The queue can become long, so you may receive \"operation timed out\" you're still being paid, when you receive \"overflow\" you are not being paid. Unfortunately, you may also receive \"operation timed out\" because the handler is unresponsive, it's not obvious which is the reason from looking at the logs. For example, what you will see in the AnnMiner Logs: 1618394538 INFO annmine.rs:519 467 Ke/s 28.56Mb/s overflow: [0, 0, 3072, 0] uploading: [0, 0, 17632, 0] accept/reject: [26932/0, 0/0, 4856/0, 796/0] - goodrate: [100%, 100%, 61%, 100%] 467 Ke/s 467 kilo-encryptions (thousands of encryptions) per second of mining power. 28.56Mb/s Total upload bandwidth (to all pools - combined) overflow: [0, 0, 3072, 0] Overflowed the internal queue of the ann miner, before it was even able to upload to the pool, one number for each pool you're mining to. 3072 Number of anns which are not uploaded to pool #3. uploading [0, 0, 17632, 0] Number of anns currently in-flight in active http requests, again 3rd pool is a problem, others are doing well (in this example). accept/reject [26932/0, 0/0, 4856/0, 796/0] Anns accepted/rejected by each pool, these numbers are based on the previous 10 seconds, pool #2 is giving a zero accepted which might be an issue, keep watching the next message 10 seconds later for another update. goodrate [100%, 100%, 61%, 100%] Goodrate = number of anns accepted divided by number of anns produced.","title":"What does overflow mean?"},{"location":"start_mining/pkt-mining-pool/#setting-up-a-pool","text":"","title":"Setting up a Pool"},{"location":"start_mining/pkt-mining-pool/#expectations","text":"General knowledge of Linux General knowledge of git General knowledge of networking General knowledge of blockchain Access to at least 6 machines running Ubuntu 18.04 LTS or 20.04 LTS , to deploy the following services. Machine 1 : PKT node Machine 2 : Master, Paymaker & Blkhander Machine 3 : AnnHandler Machine 4 : AnnHandler Machine 5 : BlkMiner Machine 6 : BlkMiner Note: It can be done all on a single machine, you just need to pay attention to ports etc. As of June 2022, the network difficulty is high, and given that half of the work is done at pool premises, it's recommended to run at least a dozen BlkMiner machines, with a significant (768GB recommended) ammount of RAM.","title":"Expectations"},{"location":"start_mining/pkt-mining-pool/#block-mining-running-a-pool_1","text":"Starting your own pool requires setting up a number of services: pktd node (one or more) - One pktd instance is required for the Master to function, each of the Block Handlers may optionally use separate pktd nodes. Master (one) - This node coordinates all of the others and provides work files and configuration Ann Handler (two or more) - These are nodes which accept announcements from the announcement miners in the network, they also provide announcements to the block miners. As you scale up the amount of bandwidth in the pool, you will need to add more Ann handlers. Block Miner (two or more) - These high performance nodes download announcements from the announcement handlers and use them in the mining process to mine blocks. Block Handlers (one or more) - These nodes receive \"block shares\" from the block miners and submit blocks if they validate the share Paymaker (one) - This node receives updates from the Ann Handlers and Block Handlers and keeps track of who should be paid. The Paymaker sends configuration to the pktd node which is used by the Master in order to make the pool pay out the announcement and block miners","title":"Block mining & running a pool"},{"location":"start_mining/pkt-mining-pool/#general-information","text":"","title":"General Information"},{"location":"start_mining/pkt-mining-pool/#repository-information","text":"The following repositories hold the required programs to run a pool: Repository Tools packetcrypt_rs: https://github.com/cjdelisle/packetcrypt_rs AnnHandler, Blkminer, AnnMiner PacketCrypt: https://github.com/cjdelisle/PacketCrypt/ Master, Paymaker, BlkHandler pktd: https://github.com/pkt-cash/pktd pktd","title":"Repository Information:"},{"location":"start_mining/pkt-mining-pool/#assumed-network-ranges","text":"In this guide we have two separate networks, the public network (198.51.100.0/24), and local network (10.0.16.0/24) to connect AnnHandlers and BlkMiner. Machine Public Network IP Private Network IP Machine 1 198.51.100.1 10.0.16.1 Machine 2 198.51.100.2 10.0.16.2 Machine 3 198.51.100.3 10.0.16.3 Machine 4 198.51.100.4 10.0.16.4 Machine 5 X 10.0.16.5 Machine 6 X 10.0.16.6","title":"Assumed network Ranges:"},{"location":"start_mining/pkt-mining-pool/#assumed-port-ranges","text":"Service Machine Port/Port Ranges Master Machine 2 8080 Paymaker Machine 2 8081 BlkHandlers Machine 2 8100-8200 AnnHandlers Machine 3 & 4 80","title":"Assumed Port Ranges:"},{"location":"start_mining/pkt-mining-pool/#installation","text":"","title":"Installation"},{"location":"start_mining/pkt-mining-pool/#machine-1","text":"","title":"Machine 1"},{"location":"start_mining/pkt-mining-pool/#pktd-node","text":"150GB of storage is required at a minimum to run the pktd node. Recommended size is around 250GB of NVMe storage. Install Golang sudo add-apt-repository ppa:longsleep/golang-backports sudo apt update sudo apt install golang-go Install git sudo apt install git Install the pktd node git clone --branch develop https://github.com/pkt-cash/pktd cd pktd ./do The output should show the following: Everything looks good - use ./bin/pktd to launch","title":"PKTD node:"},{"location":"start_mining/pkt-mining-pool/#machine-2","text":"","title":"Machine 2"},{"location":"start_mining/pkt-mining-pool/#master-paymaker-blkhandler","text":"Install the required tools: cd ~ sudo add-apt-repository universe sudo apt install git sudo apt install make sudo apt install npm sudo npm cache clean -f sudo npm install -g n sudo n stable Restart your shell ### Add here how to get latest stable version of node Clone the source code: git clone --branch master https://github.com/cjdelisle/PacketCrypt Build the PacketCrypt code cd PacketCrypt npm install","title":"Master | Paymaker | BlkHandler:"},{"location":"start_mining/pkt-mining-pool/#machine-4-6","text":"","title":"Machine 4 - 6"},{"location":"start_mining/pkt-mining-pool/#blkminer-annhandler-annminer","text":"Install the Required tools: sudo apt install gcc git sudo apt install curl curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh Clone packetcrypt_rs git clone --branch develop https://github.com/cjdelisle/packetcrypt_rs Compile PacketCrypt cd packetcrypt_rs ~/.cargo/bin/cargo build --release --features jemalloc","title":"BlkMiner | AnnHandler | AnnMiner:"},{"location":"start_mining/pkt-mining-pool/#config-of-pooljs","text":"Information: pool.js is located at: ~/PacketCrypt/pool.example.js You need to edit this file, then run: cp ~/PacketCrypt/pool.example.js ~/PacketCrypt/pool.js","title":"Config of pool.js"},{"location":"start_mining/pkt-mining-pool/#configprivateseed","text":"Signing of announcements is rarely used, it breaks people mining into multiple pools, and you should set it to null unless \"you know what you're doing\" This seed is used for deriving keys which will be used for signing announcements. Setting this value to an alphanumeric value e.g oHk8TXpbtRRZGtaYYMnIFAzYMrVh6vA8XzKWWXcKbzCThuFLIJ234bHN5peddQFzR2TtQyo58gcFRP7bKg9BeXZirSqp9gVpjBWp In general, this value should be set to the null, as signing announcements is rarely used, and breaks Announcement mining with multiple pools if you have your pool externally accessable, and should only be set if you have a strong understanding and knowledge of what you are doing. config.privateSeed = null If you aren't bothered by, or don't require your announcements to be signed .","title":"config.privateSeed"},{"location":"start_mining/pkt-mining-pool/#configpaymakerhttppasswd","text":"Anyone who has this password can make http posts to the paymaker (claim that shares were won) You should make this random and also firewall the paymaker from the public. The upload will be done using Authorization Basic with a username of \"x\" and this as the password config.paymakerHttpPasswd = 'anyone with this password can post results to the paymaker'; You can put the paymaker behind an http proxy if you wish.","title":"config.paymakerHttpPasswd"},{"location":"start_mining/pkt-mining-pool/#configmasterurl","text":"This is used by the paymaker and block handler when running them with pool.js, it is used to resolve where the master is. You can either set this as a locally host or put your master behind a nginx proxy config.masterUrl = 'http://localhost:8080'; or if you have your instance public, and you want to have it be resolvable publically, replace the url with your own. config.masterUrl = 'http://pool.pktpool.io';","title":"config.masterUrl"},{"location":"start_mining/pkt-mining-pool/#configrpc","text":"The username and password set here, should be the same username and password used at the end of this guide for when you configure the pktd service. user: 'x', pass: 'x',","title":"config.rpc"},{"location":"start_mining/pkt-mining-pool/#configannhandlers","text":"Information: config.annHandlers is a list of json object, with an object for each individual annhandler you would like to run, each ann handler will require it's own individual port. As the AnnHandler will be run on the same machine as the BlkMiner you need to make sure there are no over-lapping port bindings. If you plan to allow external AnnMiners (AnnMiners not on your LAN to mine against your pool, the url's placed in the AnnHandlers list, should be externally resolvable. The address that is advertized for accessing this ann handler (external address) If running locally use: url: 'http://10.0.16.3:8081','http://10.0.16.4:8081' If allowing external annminers use a resolved address such as: url: 'http://ann1.pktpool.io','http://ann2.pktpool.io' Replace the url with your own.","title":"config.annHandlers"},{"location":"start_mining/pkt-mining-pool/#configblkhandlers","text":"Information: config.blkHandlers is a list of json object, with an object for each individual annhandler you would like to run, each ann handler will require it's own individual port. BlockHandlers are low-effort high-volume single-threaded workers. What address should be advertized for accessing this BlkHander, again make sure there are no overlapping ports. If you are wanting to support external blockminers, this address should be externally resolvable url: 'http://localhost:8100', This is the port that the blkHandler will bind to. port: 8082, This is the host that the blkHandler will bind to. host: '::', This is how many requests a blkHandler can queue before the handler starts rejecting requests maxConnections: 50, root: config","title":"config.blkHandlers"},{"location":"start_mining/pkt-mining-pool/#configmaster","text":"Which port to run the master on port: 8080, What address to bind to, set to localhost if proxying host: '::', Minimum work for an announcement. This number is effectively a bandwidth divisor, every time you double this number you will reduce your bandwidth by a factor of two. annMinWork: Util.annWorkToTarget(128), Average number of shares per block, reducing this number will reduce load on your block handlers, but increasing it will allow payment to be spread more evenly between block miners. This wants to be set to a higher number than one, for the purpose of constantly testing that the block miners are making valid shares. You may have a block miner sitting for hours without a share and then when it wins one, it can become invalid because of misconfiguration shareWorkDivisor: 4, Which versions of announcements we will accept annVersions: [1], Request that ann miners mine announcements that are this many blocks old. Announcements contain a commitment of the most recent block hash but they need 3 blocks to \"mature\" before they can be used The point of this is so that PacketCrypt is about bandwidth, not latency. But there is a risk: If there is a surge then you are going to be starved for announcements When you are starved, you will have few usable anns which causes a slow-down in mining and the announcements which are being submitted are not usable. When you win a few blocks, those announcements become usable and you surge, which causes you to go back into starvation again. This should be set to either: 0 Which means the announcements you are receiving are used instantly 3 Which means you are waiting for the announcements to mature before using them. If running your own AnnMiners, it is advisable to set this to 0, and add the --mineold 3 to some of your AnnMiner startups on the CLI. This helps to keep a balance between keeping your pool as powerful as possible, along with having AnnMiners to help out in the case of a starvation mineOldAnns: 0,","title":"config.master"},{"location":"start_mining/pkt-mining-pool/#configpaymaker","text":"How the miners should access the paymaker (external address), replace the url with your own. url: 'pool.pktpool.io', Which port to run the paymaker on port: 8081, What address to bind to, set to localhost if proxying host: '::', Seconds between sending updates to pktd. If this set to zero, the payMaker will accept log uploads but will not send any changes of payout data to pktd. updateCycle: 120, updateCycle: 0 to disable How many seconds backward to keep history in memory historyDepth: 60 * 60 * 24 * 30, Maximum number of simultanious connections to accept before sending 500 errors maxConnections: 200,","title":"config.payMaker"},{"location":"start_mining/pkt-mining-pool/#anncompressor","text":"Store data in 1 minute aggregations timespanMs: 1000 * 60, Allow data to be submitted to any of the last 10 aggregations slotsToKeepEvents: 10, What fraction of the payout to pay to block miners (the rest will be paid to ann miners) ( Pay per last N shares ) blockPayoutFraction: 0.5, What percent of the total winnings should be taken for pool management poolFee: 0.40, The address which should be paid the pool fee poolFeeAddress: \"pkt1qyc9dkhca7uc84zn3vlgd0h0fxr3twwn34qgeqe\", This constant will affect how far back into history we pay our announcement miners ( Pay per last N shares ) pplnsAnnConstantX: 0.125, This constant will affect how far back into history we pay our block miners ( Pay per last N shares ) pplnsBlkConstantX: 2, When there are not enough shares to fairly spread out the winnings, pay what is left over to this address. defaultAddress: \"pkt1q6hqsqhqdgqfd8t3xwgceulu7k9d9w5t2amath0qxyfjlvl3s3u4sjza2g2\", When something goes wrong, direct pktd to send all coins here, if this is different from the defaultAddress then it is possible to account for and pay out to the miners later when the problem is fixed. errorAddress: \"pkt1q6hqsqhqdgqfd8t3xwgceulu7k9d9w5t2amath0qxyfjlvl3s3u4sjza2g2\",","title":"annCompressor"},{"location":"start_mining/pkt-mining-pool/#config-of-pooltoml","text":"Information: - pool.example.toml is located at: ~/packetcrypt_rs/pool.example.toml - You need to edit this file, then run: ~/packetcrypt_rs/pool.example.toml ~/packetcrypt_rs/pool.toml Password used by your paymaker to post logs for payment, the same as config.paymakerHttpPasswd paymaker_http_password = \"you'll want this to be a secret\" URL of the pool master, used for getting configuration and work, the same as: Replace the url with your own. master_url = \"http://pool.pktpool.io\"","title":"Config of pool.toml"},{"location":"start_mining/pkt-mining-pool/#ann_handlerah","text":"You can have multiple ann_handlers, you can do this by defining each one such as: [ann_handler.ah0] \"parameters\" [ann_handler.ah1] \"parameters\" These can all be in a single file to be used by each annhandler, when starting the annhandlers, you would start them with on each respective machine: packetcrypt ah --config /path/to/config.toml ah0 packetcrypt ah --config /path/to/config.toml ah1 Number of threads to dedicate to the AnnHandler num_workers = 8 Length of the input queue, keeping this low will create back-pressure and prevent miners from posting too many announcements when the server is in fact overloaded input_queue_len = 256 The public url of the annhandler, this should match what is set in your pool.js Replace the url with your own. public_url = \"http://ann1.pktpool.io/submit\" Bind to this port bind_port = \"198.51.100.3:80\" Bind this port to the sprayer component bind_pvt = \"10.0.16.3:6666\" Set sprayer spray_at = [\"239.0.1.1:6667\"] spray_workers = 8 For Machine 3 you should end up with something like this [ann_handler.ah0] block_miner_passwd = \"no one steals my anns\" skip_check_chance = 0 num_workers = 8 input_queue_len = 512 public_url = \"http://ann1.pktpool.io/submit\" bind_pub = \"198.51.100.3:80\" bind_pvt = \"10.0.16.3:6666\" spray_at = [\"239.0.1.1:6667\"] spray_workers = 8 subscribe_to = [] files_to_keep = 512 The same logic should be followed for Machine 4 and other handlers you may have.","title":"ann_handler.ah*"},{"location":"start_mining/pkt-mining-pool/#note-to-bind-low-ports-with-non-root-user-run","text":"sudo setcap CAP_NET_BIND_SERVICE=+eip $(which packetcrypt)","title":"NOTE: To bind low ports with non-root user run:"},{"location":"start_mining/pkt-mining-pool/#running-manually","text":"","title":"Running Manually"},{"location":"start_mining/pkt-mining-pool/#machine-1_1","text":"Information: These tasks need to be run in the order they are presented PKTD needs to have downloaded the full chain first, you will know when the node is upto date when height is equal to the current block on the explorer It can take 12+ hours to fully sync to the current block height","title":"Machine 1"},{"location":"start_mining/pkt-mining-pool/#pktd","text":"--rpcuser and --rpcpass should match the values set in pool.js under config.rpc ./pktd/bin/pktd --rpcuser=XXX --rpcpass=XXX --miningaddr ","title":"PKTD"},{"location":"start_mining/pkt-mining-pool/#machine-2_1","text":"","title":"Machine 2"},{"location":"start_mining/pkt-mining-pool/#master","text":"node ./pool.js --master","title":"Master"},{"location":"start_mining/pkt-mining-pool/#paymaker","text":"node ./pool.js --payMaker","title":"Paymaker"},{"location":"start_mining/pkt-mining-pool/#blkhandlers","text":"Launch the BlkHandler nodes, specify --blk0 for the first BlkHandler , --blk1 for the second, and so forth cd PacketCrypt node ./pool.js --blk0 node ./pool.js --blk1","title":"BlkHandler(s)"},{"location":"start_mining/pkt-mining-pool/#machine-3","text":"","title":"Machine 3"},{"location":"start_mining/pkt-mining-pool/#annhandler","text":"cd packetcrypt_rs ./target/release/packetcrypt ah --config /path/to/pool.toml ah0","title":"AnnHandler"},{"location":"start_mining/pkt-mining-pool/#machine-4","text":"","title":"Machine 4"},{"location":"start_mining/pkt-mining-pool/#annhandler_1","text":"cd packetcrypt_rs ./targer/release/packetcrypt ah --config /path/to/pool.toml ah1","title":"AnnHandler"},{"location":"start_mining/pkt-mining-pool/#machine-5-and-6","text":"","title":"Machine 5 and 6"},{"location":"start_mining/pkt-mining-pool/#blkminer","text":"--threads is the number of threads you want to dedicate to the Blkminer, the default is to use all available threads. --paymentaddr is the wallet you want your coins to be mined into, it is advisable to not use the electrum wallet for this. --memorysizemb is how much RAM you are allocating to block mining, Ideally you want to set as much as you can. is the masterUrl of your pool cd packetcrypt_rs ./target/release/packetcrypt blk --paymentaddr --threads 80 --memorysizemb 665000 --handlerpass NoOneStealsMyAnns --subscribe 10.0.16.3:6666 --bind 0.0.0.0:6667 --mcast 239.0.1.1","title":"BlkMiner"},{"location":"start_mining/pkt-mining-pool/#nginx-setup-for-allowing-external-annmining","text":"","title":"NGINX Setup (For allowing external AnnMining)"},{"location":"start_mining/pkt-mining-pool/#machine-2_2","text":"Update system and install Nginx sudo apt update sudo apt install nginx Unlink default nginx site unlink /etc/nginx/sites-enabled/default cd /etc/nginx/sites-available Create and edit the reverse-proxy.conf file vim reverse-proxy.conf The config for the services: server { listen 80; listen [::]:80; server_name ; location / { proxy_pass http://localhost:8080/; } } server { listen 80; listen [::]:80; server_name paymaker.pktpool.io; location / { proxy_pass http://localhost:8081/; } } Link new file to sites-enabled ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/reverse-proxy.conf Remove default config rm default Check reverse proxy config is correct nginx -t Reload nginx to pick up config changes. sudo systemctl reload nginx","title":"Machine 2"},{"location":"wallet_setup/install-from-seed/","text":"Installing a Wallet From Seed \u00b6 If you already have a PKT wallet and know your seed, you may be able to import your coins into a new wallet. This will depend on the compatibility of your seed with the new wallet. The seed to your wallet is either a list of 15 words which you were instructed to write down during your initial wallet setup. If you set up your wallet in 2019 or early 2020 you may have a seed that is a long alphanumeric string of characters, instead of a list of 15 words. What is important to know about PKT Wallets seeds is that some wallets encrypt the wallet seed using the wallet password. In these cases, you will need to know the seed and the password that was used when the wallet was initially created. It is important to keep your seed and password written down in a safe place where you will remember it. When you are setting up any of the PKT wallets you will be asked if you want to load from seed. Then you will follow the instructions. If you want to migrate your PKT Electrum wallet seed into the PKT CLI wallet, follow these steps [here].","title":"Installing from Seed"},{"location":"wallet_setup/install-from-seed/#installing-a-wallet-from-seed","text":"If you already have a PKT wallet and know your seed, you may be able to import your coins into a new wallet. This will depend on the compatibility of your seed with the new wallet. The seed to your wallet is either a list of 15 words which you were instructed to write down during your initial wallet setup. If you set up your wallet in 2019 or early 2020 you may have a seed that is a long alphanumeric string of characters, instead of a list of 15 words. What is important to know about PKT Wallets seeds is that some wallets encrypt the wallet seed using the wallet password. In these cases, you will need to know the seed and the password that was used when the wallet was initially created. It is important to keep your seed and password written down in a safe place where you will remember it. When you are setting up any of the PKT wallets you will be asked if you want to load from seed. Then you will follow the instructions. If you want to migrate your PKT Electrum wallet seed into the PKT CLI wallet, follow these steps [here].","title":"Installing a Wallet From Seed"},{"location":"wallet_setup/install-pkt-electrum/","text":"Installing PKT Electrum (Mac/Windows) \u00b6 Important Electrum is a good lightweight wallet for making and receiving payments, but it lacks scalability and is not appropriate for mining , if you are interested in mining PKT, see pktwallet . First setup \u00b6 MacOS \u00b6 Download the file ending with .dmg from the latest PKT Electrum Releases Open Finder Double-click on your Downloads folder and find and click on electrum-pkt-4.0.2.dmg A new window will open with the PKT Electrum app, click and drag it into your Applications folder Press Command+Space to open your Spotlight Search and type PKT Electrum, when you see the PKT Electrum app, press the Enter key to open it. The first time PKT Electrum is opened, you will get a popup asking you if you want to open it, click open Continue with Setting up your wallet below Windows \u00b6 Download the file ending with .exe from the latest PKT Electrum Releases You will see a popup window telling you the application is not signed by a Microsoft Authorized Developer, always be sure you download PKT Electrum from the original website, do not run any app given to you in a chat, file-sharing or email attachment. Click \"More info\" to show additional options. Click the \"Run anyway\" button to launch PKT Electrum, you won't see this message again. Follow the steps in the setup process. Go to your desktop and you should see a new icon labeled PKT Electrum , click on it. Continue with Setting up your wallet below. Linux \u00b6 Download the file ending with .AppImage from the latest PKT Electrum Releases Click on the downloaded file and PKT Electrum should start up right away. Setting up your wallet \u00b6 Before you can begin using PKT, you need to setup your wallet, this means writing down your secret key and setting passwords so your PKT will stay safe. First you will be asked if you want to configure the server to connect to, unless you are an advanced user, just click \"next\" Next select your wallet, you give your wallet a name if you wish, or leave it as default_wallet , then click \"next\". You will be prompted to select which type of wallet you are creating, unless you are doing something fancy, you'll want to just click \"next\" Next you will have the option to create a wallet using a secret key from different sources, for the purposes of this tutorial just click next. Next you will be asked if you want to create a \"legacy\" style wallet, this is not needed so just click \"next\" Now PKT Electrum is going to create a seed , it takes the form of 12 words and from it your entire wallet is created If you have these 12 special words, you can recover your PKT even if your computer is lost or damaged If someone else gets access to these 12 words, they can steal all of your PKT It is recommended that you write this on paper and keep in a safe place. After you have written your seed, you will be asked to type it back in, the fast way to do this is by copy/paste to a text pad Now you'll be asked to write it back in, you can copy it from the text pad Make sure you really stored your seed on paper, we do not recommend storing it on any electronic device . Now you will need to pick a passphrase for your wallet This passphrase encrypts your wallet, protecting your PKT even if your computer is stolen Unlike your seed, the passphrase is useless without the wallet file We recommend using https://www.useapassphrase.com/ to pick a strong passphrase for you You can store your passphrase on your phone to have easy access Congratulations, you now have a PKT wallet! It will require about 5 minutes to synchronize with the PKT blockchain, but you can still use it while this is happening. Receiving PKT \u00b6 To receive coins, you need to create a new PKT address Click the \"Receive\" tab Type a description for the purpose of receiving the coins, this will appear in the notification when you get paid Set the expiration, if this is not an invoice , you can choose \"never\" After you click \"Request\", your wallet will create a new address and copy it to your clipboard so you can send it to the person paying you (or transfer money to your new wallet) When PKT gets sent to your new address, you will get a notification. It says \"unconfirmed\" because the transaction has not yet been included in the history of the blockchain. Once your transaction has been included in the blockchain, this icon will change to a clock and then after a few minutes, a checkmark Congratulations, you have received your first PKT Sending PKT \u00b6 To pay PKT to someone else, click on the Send tab and paste the address to be paid Type a description of the payment, this is just for you, it will not be sent to the person you are paying Enter the amount to be paid Click Pay You will be prompted to enter your wallet passphrase in order to decrypt the wallet for one brief moment to send the PKT Every transaction requires a fee for inclusion in the blockchain, this is a very small cost: 132 nPKT is one hundred and thirty two nano-PKT (that means billionths , i.e. 0.000000132 PKT) After you enter your passphrase and click \"send\", you will see a transaction ID , this set of numbers and letters uniquely identifies your transaction and can be used to view it in the block explorer. Just like when receiving, your transaction will appear first as \"unconfirmed\" and then later it will switch to a clock when it has been included in the blockchain. After waiting a few minutes, you will see a clock and then later a checkmark indicating your transaction has been included in the blockchain When people consider a transaction to be \"complete\" depends on the merchant, but in general it should be considered to be ok once it switches from \"unconfirmed\" to the clock icon. Congratulations, you've sent PKT! About Units \u00b6 Each PKT is made up of 1000 milli-PKT, denoted mPKT Each milli-PKT is sub-divided into 1000 micro-PKT, denoted uPKT Each micro-PKT is sub-divided into 1000 nano-PKT, denoted nPKT Advanced usage \u00b6 Recover from seed \u00b6 You can recover a PKT Electrum wallet from the seed you were given when you set it up. To do this follow the same instructions as for any other Electrum wallet: https://bitcoinelectrum.com/restoring-your-standard-wallet-from-seed/ Note that recovery from seed will not work to import addresses from other wallets such as a Gridnode. Multi-signature \u00b6 Setting up multi-signature in PKT Electrum is the same as with Bitcoin Electrum so you can follow this tutorial: https://electrum.readthedocs.io/en/latest/multisig.html How it works \u00b6 PKT Electrum is significantly similar to Bitcoin Electrum. It contacts one of a pool of community operated electrumx servers. Instead of syncing the entire chain it requests information about its addresses from the electrumx server and only downloads enough of the blockchain to verify that the electrumx server is not trying to trick it. In practice this means the wallet needs to check the proof of work and sync the block headers but not the rest of the blocks. Since PKT uses PacketCrypt proof of work, the work verification needs to be different. PacketCrypt headers are fairly large, between 4KB and 16KB, even at only 4KB each they make up 2.1GB of data per year. To maintain security without downloading an unacceptably large amount of data, PKT Electrum downloads only a small number of PacketCrypt proofs near the tip of the chain. If the wallet only downloaded (say) the most recent 100 PacketCrypt proofs, an attacking electrumx server would know exactly how many blocks it needed to mine in order to create a convincing fake chain, PKT Electrum makes this more difficult by using statistical verification. Statistical Verification \u00b6 PKT Electrum makes the job of an attacker hard by asking for an unpredictable random set of PacketCrypt proofs, the chance of any give block being verified is based on the distance between the tip of the chain and that block. The chance is defined as MIN(100%, K / distance_from_tip) where K is a constant which we set at 20 to make PKT Electrum verify around 200 blocks total. With K = 20 , the first 20 blocks have a 100% chance of being verified. * block 21 has a 95% chance * block 25 has an 80% chance * block 50 has a 40% chance * block 80 has a 25% chance The distribution of likelyhood of verifying a block is shown by this chart: Running an ElectrumX server \u00b6 If you would like to participate in running your own ElectrumX server to help the PKT Electrum network, you can do so using a simple Docker command. Check out the Docker PKT Electrumx project for more information about how to run an instance. It is important to keep your seed and password written down in a safe place where you will remember it. If your PKT Electrum wallet is mined into, it will break. You will then need to migrate your PKT Electrum wallet to a PKT CLI wallet using the following instructions. Migrating from Electrum to PKTWallet \u00b6 If you have an electrum based wallet which becomes overloaded from too many transactions (e.g. from mining directly into it), then you will need to migrate your keys to a pktwallet instance. Step 1: Setup pktwallet \u00b6 Follow the instructions in pktwallet to get your wallet up and running Step 2: Export your keys \u00b6 In Electrum, click Wallet -> Private Keys -> Export You will be prompted to enter your Electrum wallet password, then a window should appear showing your keys KEEP THESE KEYS SECRET Find an address which you want to migrate and copy the key with that address Do not copy the part which says p2wpkh: , just the letters after it The key will look sometihng like this: ci2TBp2HTWtyMQtizWMuugHxG6lNpInA1bSpLIWzjJS2AI8ObwV5 Step 3: Import key to pktwallet \u00b6 In a terminal window, run pktctl --wallet getbalance to verify that your wallet is working Unlock your wallet using pktctl --wallet walletpassphrase 1000000 Type pktctl --wallet importprivkey You should see the address printed on the screen Importing more keys \u00b6 When you import a key, it starts a rescan of the chain automatically, in order to import more you need to stop pktctl --wallet stopresync to stop Speed things up \u00b6 If you know exactly when an address was paid, you can speed up the import by only rescanning blocks where it might have been paid. For example if you are sure that the address was not paid earlier than block number 600000 you can do the following: pktctl --wallet stopresync pktctl --wallet resync 600000 100000000 Check that it's working \u00b6 It's recommended that you run pktwallet with -d debug flag in order to be able to see the debug logs. When you are resyncing you should see log lines like the following: 1609188780 [DBG] wallet.go:2817 Rescan cycle [620100] 1609188781 [DBG] wallet.go:2817 Rescan cycle [620200] 1609188782 [DBG] wallet.go:2817 Rescan cycle [620300] 1609188783 [DBG] wallet.go:2817 Rescan cycle [620400] The number if the block number which is being scanned. Troubleshooting \u00b6 ErrBirthdayBlockNotSet: birthday block not set Your wallet is not synced yet, wait for it to become synced","title":"Installing PKT Electrum (Mac/Windows)"},{"location":"wallet_setup/install-pkt-electrum/#installing-pkt-electrum-macwindows","text":"Important Electrum is a good lightweight wallet for making and receiving payments, but it lacks scalability and is not appropriate for mining , if you are interested in mining PKT, see pktwallet .","title":"Installing PKT Electrum (Mac/Windows)"},{"location":"wallet_setup/install-pkt-electrum/#first-setup","text":"","title":"First setup"},{"location":"wallet_setup/install-pkt-electrum/#macos","text":"Download the file ending with .dmg from the latest PKT Electrum Releases Open Finder Double-click on your Downloads folder and find and click on electrum-pkt-4.0.2.dmg A new window will open with the PKT Electrum app, click and drag it into your Applications folder Press Command+Space to open your Spotlight Search and type PKT Electrum, when you see the PKT Electrum app, press the Enter key to open it. The first time PKT Electrum is opened, you will get a popup asking you if you want to open it, click open Continue with Setting up your wallet below","title":"MacOS"},{"location":"wallet_setup/install-pkt-electrum/#windows","text":"Download the file ending with .exe from the latest PKT Electrum Releases You will see a popup window telling you the application is not signed by a Microsoft Authorized Developer, always be sure you download PKT Electrum from the original website, do not run any app given to you in a chat, file-sharing or email attachment. Click \"More info\" to show additional options. Click the \"Run anyway\" button to launch PKT Electrum, you won't see this message again. Follow the steps in the setup process. Go to your desktop and you should see a new icon labeled PKT Electrum , click on it. Continue with Setting up your wallet below.","title":"Windows"},{"location":"wallet_setup/install-pkt-electrum/#linux","text":"Download the file ending with .AppImage from the latest PKT Electrum Releases Click on the downloaded file and PKT Electrum should start up right away.","title":"Linux"},{"location":"wallet_setup/install-pkt-electrum/#setting-up-your-wallet","text":"Before you can begin using PKT, you need to setup your wallet, this means writing down your secret key and setting passwords so your PKT will stay safe. First you will be asked if you want to configure the server to connect to, unless you are an advanced user, just click \"next\" Next select your wallet, you give your wallet a name if you wish, or leave it as default_wallet , then click \"next\". You will be prompted to select which type of wallet you are creating, unless you are doing something fancy, you'll want to just click \"next\" Next you will have the option to create a wallet using a secret key from different sources, for the purposes of this tutorial just click next. Next you will be asked if you want to create a \"legacy\" style wallet, this is not needed so just click \"next\" Now PKT Electrum is going to create a seed , it takes the form of 12 words and from it your entire wallet is created If you have these 12 special words, you can recover your PKT even if your computer is lost or damaged If someone else gets access to these 12 words, they can steal all of your PKT It is recommended that you write this on paper and keep in a safe place. After you have written your seed, you will be asked to type it back in, the fast way to do this is by copy/paste to a text pad Now you'll be asked to write it back in, you can copy it from the text pad Make sure you really stored your seed on paper, we do not recommend storing it on any electronic device . Now you will need to pick a passphrase for your wallet This passphrase encrypts your wallet, protecting your PKT even if your computer is stolen Unlike your seed, the passphrase is useless without the wallet file We recommend using https://www.useapassphrase.com/ to pick a strong passphrase for you You can store your passphrase on your phone to have easy access Congratulations, you now have a PKT wallet! It will require about 5 minutes to synchronize with the PKT blockchain, but you can still use it while this is happening.","title":"Setting up your wallet"},{"location":"wallet_setup/install-pkt-electrum/#receiving-pkt","text":"To receive coins, you need to create a new PKT address Click the \"Receive\" tab Type a description for the purpose of receiving the coins, this will appear in the notification when you get paid Set the expiration, if this is not an invoice , you can choose \"never\" After you click \"Request\", your wallet will create a new address and copy it to your clipboard so you can send it to the person paying you (or transfer money to your new wallet) When PKT gets sent to your new address, you will get a notification. It says \"unconfirmed\" because the transaction has not yet been included in the history of the blockchain. Once your transaction has been included in the blockchain, this icon will change to a clock and then after a few minutes, a checkmark Congratulations, you have received your first PKT","title":"Receiving PKT"},{"location":"wallet_setup/install-pkt-electrum/#sending-pkt","text":"To pay PKT to someone else, click on the Send tab and paste the address to be paid Type a description of the payment, this is just for you, it will not be sent to the person you are paying Enter the amount to be paid Click Pay You will be prompted to enter your wallet passphrase in order to decrypt the wallet for one brief moment to send the PKT Every transaction requires a fee for inclusion in the blockchain, this is a very small cost: 132 nPKT is one hundred and thirty two nano-PKT (that means billionths , i.e. 0.000000132 PKT) After you enter your passphrase and click \"send\", you will see a transaction ID , this set of numbers and letters uniquely identifies your transaction and can be used to view it in the block explorer. Just like when receiving, your transaction will appear first as \"unconfirmed\" and then later it will switch to a clock when it has been included in the blockchain. After waiting a few minutes, you will see a clock and then later a checkmark indicating your transaction has been included in the blockchain When people consider a transaction to be \"complete\" depends on the merchant, but in general it should be considered to be ok once it switches from \"unconfirmed\" to the clock icon. Congratulations, you've sent PKT!","title":"Sending PKT"},{"location":"wallet_setup/install-pkt-electrum/#about-units","text":"Each PKT is made up of 1000 milli-PKT, denoted mPKT Each milli-PKT is sub-divided into 1000 micro-PKT, denoted uPKT Each micro-PKT is sub-divided into 1000 nano-PKT, denoted nPKT","title":"About Units"},{"location":"wallet_setup/install-pkt-electrum/#advanced-usage","text":"","title":"Advanced usage"},{"location":"wallet_setup/install-pkt-electrum/#recover-from-seed","text":"You can recover a PKT Electrum wallet from the seed you were given when you set it up. To do this follow the same instructions as for any other Electrum wallet: https://bitcoinelectrum.com/restoring-your-standard-wallet-from-seed/ Note that recovery from seed will not work to import addresses from other wallets such as a Gridnode.","title":"Recover from seed"},{"location":"wallet_setup/install-pkt-electrum/#multi-signature","text":"Setting up multi-signature in PKT Electrum is the same as with Bitcoin Electrum so you can follow this tutorial: https://electrum.readthedocs.io/en/latest/multisig.html","title":"Multi-signature"},{"location":"wallet_setup/install-pkt-electrum/#how-it-works","text":"PKT Electrum is significantly similar to Bitcoin Electrum. It contacts one of a pool of community operated electrumx servers. Instead of syncing the entire chain it requests information about its addresses from the electrumx server and only downloads enough of the blockchain to verify that the electrumx server is not trying to trick it. In practice this means the wallet needs to check the proof of work and sync the block headers but not the rest of the blocks. Since PKT uses PacketCrypt proof of work, the work verification needs to be different. PacketCrypt headers are fairly large, between 4KB and 16KB, even at only 4KB each they make up 2.1GB of data per year. To maintain security without downloading an unacceptably large amount of data, PKT Electrum downloads only a small number of PacketCrypt proofs near the tip of the chain. If the wallet only downloaded (say) the most recent 100 PacketCrypt proofs, an attacking electrumx server would know exactly how many blocks it needed to mine in order to create a convincing fake chain, PKT Electrum makes this more difficult by using statistical verification.","title":"How it works"},{"location":"wallet_setup/install-pkt-electrum/#statistical-verification","text":"PKT Electrum makes the job of an attacker hard by asking for an unpredictable random set of PacketCrypt proofs, the chance of any give block being verified is based on the distance between the tip of the chain and that block. The chance is defined as MIN(100%, K / distance_from_tip) where K is a constant which we set at 20 to make PKT Electrum verify around 200 blocks total. With K = 20 , the first 20 blocks have a 100% chance of being verified. * block 21 has a 95% chance * block 25 has an 80% chance * block 50 has a 40% chance * block 80 has a 25% chance The distribution of likelyhood of verifying a block is shown by this chart:","title":"Statistical Verification"},{"location":"wallet_setup/install-pkt-electrum/#running-an-electrumx-server","text":"If you would like to participate in running your own ElectrumX server to help the PKT Electrum network, you can do so using a simple Docker command. Check out the Docker PKT Electrumx project for more information about how to run an instance. It is important to keep your seed and password written down in a safe place where you will remember it. If your PKT Electrum wallet is mined into, it will break. You will then need to migrate your PKT Electrum wallet to a PKT CLI wallet using the following instructions.","title":"Running an ElectrumX server"},{"location":"wallet_setup/install-pkt-electrum/#migrating-from-electrum-to-pktwallet","text":"If you have an electrum based wallet which becomes overloaded from too many transactions (e.g. from mining directly into it), then you will need to migrate your keys to a pktwallet instance.","title":"Migrating from Electrum to PKTWallet"},{"location":"wallet_setup/install-pkt-electrum/#step-1-setup-pktwallet","text":"Follow the instructions in pktwallet to get your wallet up and running","title":"Step 1: Setup pktwallet"},{"location":"wallet_setup/install-pkt-electrum/#step-2-export-your-keys","text":"In Electrum, click Wallet -> Private Keys -> Export You will be prompted to enter your Electrum wallet password, then a window should appear showing your keys KEEP THESE KEYS SECRET Find an address which you want to migrate and copy the key with that address Do not copy the part which says p2wpkh: , just the letters after it The key will look sometihng like this: ci2TBp2HTWtyMQtizWMuugHxG6lNpInA1bSpLIWzjJS2AI8ObwV5","title":"Step 2: Export your keys"},{"location":"wallet_setup/install-pkt-electrum/#step-3-import-key-to-pktwallet","text":"In a terminal window, run pktctl --wallet getbalance to verify that your wallet is working Unlock your wallet using pktctl --wallet walletpassphrase 1000000 Type pktctl --wallet importprivkey You should see the address printed on the screen","title":"Step 3: Import key to pktwallet"},{"location":"wallet_setup/install-pkt-electrum/#importing-more-keys","text":"When you import a key, it starts a rescan of the chain automatically, in order to import more you need to stop pktctl --wallet stopresync to stop","title":"Importing more keys"},{"location":"wallet_setup/install-pkt-electrum/#speed-things-up","text":"If you know exactly when an address was paid, you can speed up the import by only rescanning blocks where it might have been paid. For example if you are sure that the address was not paid earlier than block number 600000 you can do the following: pktctl --wallet stopresync pktctl --wallet resync 600000 100000000","title":"Speed things up"},{"location":"wallet_setup/install-pkt-electrum/#check-that-its-working","text":"It's recommended that you run pktwallet with -d debug flag in order to be able to see the debug logs. When you are resyncing you should see log lines like the following: 1609188780 [DBG] wallet.go:2817 Rescan cycle [620100] 1609188781 [DBG] wallet.go:2817 Rescan cycle [620200] 1609188782 [DBG] wallet.go:2817 Rescan cycle [620300] 1609188783 [DBG] wallet.go:2817 Rescan cycle [620400] The number if the block number which is being scanned.","title":"Check that it's working"},{"location":"wallet_setup/install-pkt-electrum/#troubleshooting","text":"ErrBirthdayBlockNotSet: birthday block not set Your wallet is not synced yet, wait for it to become synced","title":"Troubleshooting"},{"location":"wallet_setup/pkt-cli-wallet/","text":"Installing PKT CLI Wallet (Mac / Windows / Linux) \u00b6 The command line PKT wallet First Time Installation and Launching \u00b6 Download pktd \u00b6 Microsoft Windows \u00b6 Download the most recent zip archive suffixed with -windows.zip available from pktd releases page For example: pktd-v1.4.0-windows.zip Unarchive the content of the zip file Open the command prompt and navigate to the bin directory in the extracted archive For Example: cd Downloads\\pktd*\\bin Follow the instructions below but In place of ./bin/pktwallet , use pktwallet.exe In place of ./bin/pktctl , use pktctl.exe MacOS and Linux \u00b6 Download one of the most recent packages available for Linux or MacOS from pktd releases page For example, for pktd-v1.4.0 release: For MacOS , after having downloaded pktd-v1.4.0-macos.pkg , install pktwallet and other utilities by clicking on the package icon in the Finder. For Linux , after having downloaded one of the following packages: pktd-v1.4.0-linux.deb (Debian or Ubuntu) pktd-v1.4.0-linux.rpm (Fedora or RedHat) pktd AUR package (Arch linux or Manjaro), install pktwallet and other utilities by clicking on the appropriate package icon or running an installation command Creating a New Wallet \u00b6 To create a new PKT wallet, use the pktwallet --create command: ./bin/pktwallet --create You will be prompted to follow a few steps. Make sure you write your seed words on paper so that you can recover your funds even if your computer is damaged. Do not skip this step. You will thank yourself later. Keep it secret. Keep it safe. Launching pktwallet \u00b6 After creating your wallet, you can launch pktwallet with: ./bin/pktwallet Watch the output from the logs and when you see a log line like this: 1608294386 [INF] headerlogger.go:64 Processed 1 block in the last 24.82s (height 702781, 2020-12-18 13:26:01 +0100 CET) Compare the height number in the log line (e.g. 702781) to the number in the pkt block explorer to see when your wallet is up to date. A complete sync from a new installation can take 12+ hours. During this time, the balance in your wallet will not be accurate and you will be unable to transact. You may, however, proceed with creating an address while syncing, as detailed below. Creating a New PKT Address \u00b6 While pktwallet is running in the background (or in another terminal), use the following command: ./bin/pktctl --wallet getnewaddress You should see a series of numbers and letters beginning with pkt1 . This is your newly created PKT address which you can use for receiving coins. If you need to view it after creation, the address, along with the balance, can be seen in the output from running: ./bin/pktctl --wallet getaddressbalances 1 1 NOTE : Every time you use getnewaddress , the address you receive must be remembered by pktwallet forever. So, only use it when you actually need an address. How to install the PKT World Wallet (Windows only) \u00b6 Download the PKT World Wallet Follow the installation instructions Launch wallet Create a new wallet Enter a wallet passphrase. Make sure to save your passphrase in a safe place. Write down your wallet seed. It is very important to keep your seed in a safe place To generate a new PKT address, click Wallet. Generate new address To begin mining using the PKT World Wallet, click Miner Start Mining How to install a CLI Wallet \u00b6 If you already have a wallet created on your computer called wallet.db you will need to create a new wallet by following these steps: Download pktd-v1.5.1-macos.pkg Run the installation Open Terminal Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktwallet --create --wallet xxxx xxxx is the name of the wallet i.e. wallet personal Make sure to write this down for your notes Enter passphrase or leave empty Make sure to write this down for you notes Do NOT add additional layer of security Copy down your seed. If your wallet is destroyed, you can recover it as long as you have this seed and your wallet passphrase. Please keep in mind that anyone who has access to the seed only needs to guess your wallet passphrase to access your funds. Follow the instructions to finalize wallet How to start up CLI Wallet \u00b6 Open terminal Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktwallet --wallet (whatever you named your wallet) i.e wallet personal How to create new PKT wallet address \u00b6 Make sure you have the CLI wallet running in a separate terminal window Open Terminal Enter command: $ cd pktd Enter command: $ ~/pktd/bin/pktctl --wallet getnewaddress Save your address in a safe place that is easily accessible How to send PKT from your CLI wallet \u00b6 Make sure you have the CLI wallet running in a separate terminal window Command click on file to open Open terminal Enter command: $ cd pktd Enter Command: $ ~/pktd/pktd/bin/pktctl --wallet sendfrom pkt1xxxxx $$$$ '[\"pkt1xxxxx\"]' xxxxx = PKT address you want to send from and to $$$$ = amount of pkt you want to send How to install a CLI Wallet from Seed \u00b6 If you already have a wallet created on your computer called wallet.db you will need to create a new wallet by following these steps: Download pktd-v1.5.1-macos.pkg Command click on file to open Run the installation Open Terminal Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktwallet --create --wallet xxxx xxxx is the name of the wallet i.e. wallet personal Make sure to write this down for your notes Enter passphrase or leave empty Make sure to write this down for you notes Do NOT add additional layer of security Enter seed Start up wallet (see instructions above) Open new terminal window Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktctl --wallet getnewaddress repeat until you find receive (each of) your recovered wallet address(es) Enter the command: $ ~/pktd/bin/pktctl --wallet resync This will resync the wallet to the blockchain (takes at least 24 hours) Enter the command: $ ~/pktd/bin/pktctl --wallet getaddressbalances 1 1 this is how you view all your (sub)wallet balances Using Your Wallet \u00b6 pktctl is the program that interfaces with a running pktwallet instance. pktctl functions will not work if pktwallet is not running and accessible. Some functions will be limited until pktwallet is fully synchronized. Some functions require the wallet being unlocked before executing. Getting Your Balance \u00b6 You can check your current PKT balance using pktctl or you can check the balances of each of your addresses if you have more than one. ./bin/pktctl --wallet getbalance or: ./bin/pktctl --wallet getaddressbalances getaddressbalances by itself will not show 0 balance addresses you may have created. To show these addresses, use: ./bin/pktctl --wallet getaddressbalances 1 1 For more explanation of the meaning of the output of getaddressbalances , use: ./bin/pktctl --wallet help getaddressbalances Unlocking Wallet \u00b6 While many functions can be performed while the wallet is locked, other functions first require the wallet to be unlocked, including sending PKT and folding. The passphrase used to unlock the wallet was set when creating the wallet. To unlock your wallet for 120 seconds (this can be changed to your liking), use: ./bin/pktctl --wallet walletpassphrase 120 To keep your wallet unlocked, use: ./bin/pktctl --wallet walletpassphrase 0 If using 0 as in the previous example to keep your wallet indefinitely unlocked, it will stay unlocked until you either restart pktwallet or run: ./bin/pktctl --wallet walletlock NOTE: Special characters (e.g., !, #, & *) in your passphrase may be incorrectly interpreted by your shell. You may need to wrap your passphrase in quotes. ./bin/pktctl --wallet walletpassphrase 'suP3r_S3cReT^P@s5W0Rd!' 120 Sending PKT \u00b6 You can send PKT using the sendtoaddress command, but first you must unlock your wallet for sending, as shown in the previous step. To send cjd a 10 PKT tip: ./bin/pktctl --wallet sendtoaddress pkt1qt8xe7dwpelngtcpsgn5nkj3pwwdm7gf3l4auax 10 Sending PKT from Specific Address \u00b6 pktwallet gives you control over which addresses are used for making a payment. This means you can keep different PKT in your wallet separate, for example separating business transactions from personal transactions. NOTE : PKT is not a \"privacy coin\", so transactions are still shown in the blockchain like with Bitcoin. Unlock wallet: ./bin/pktctl --wallet walletpassphrase 60 Send 10 PKT to \"their address\" from \"your address\": ./bin/pktctl --wallet sendfrom 10 '[\"\"]' Notice the '[\" . This is because the last argument is actually a quoted JSON array . This means you can use multiple addresses as the source of a payment. For example: ./bin/pktctl --wallet sendfrom 10 '[\"\", \"\"]' Windows users require unique formatting for command prompt: pktctl.exe --wallet sendfrom 10 [\\\"\\\"] Sweeping an Address \u00b6 With pktwallet, sending 0 PKT has special significance in that it will send \"as much PKT as possible\". To sweep address into , you can use the following command: ./bin/pktctl --wallet sendfrom 0 '[\"\"]' Windows: pktctl.exe --wallet sendfrom 0 [\\\"\\\"] NOTE : Sweeping an address will send as much PKT as possible , which is not necessarily all PKT in that address. You may need to sweep multiple times before the address is empty. Folding Coins \u00b6 If you are the recipient of many transactions, such as is the case in mining, you may not be able to spend all of them at once. This is similar to someone who is paid in pennies having a difficult time using the pennies to buy a car. To solve this issue, you can consolidate all of the coins which were paid to you by folding . Folding is sweeping an address to itself . Just like in sweeping, you may need to run the command many times before you have completely folded. See FAQs for more detail. For example: ./bin/pktctl --wallet sendfrom
    0 '[\"
    \"]' Windows: pktctl.exe --wallet sendfrom
    0 [\\\"
    \\\"] Alternative GUI Wallets \u00b6 Electrum for PKT (Windows, MacOS, Linux) NOTE: Electrum is not appropriate for mining. Do NOT mine into an electrum wallet! PKT World Wallet (Windows) Zulu Wallet (MacOS) FAQs \u00b6 I have several machines mining, do I need the wallet running on each machine? \u00b6 NO! In fact, the wallet doesn't need to be running at all to mine, but you do need to ensure you have control of the address you are mining to. Should I leave pktwallet running? \u00b6 It is not a requirement to have pktwallet running to mine. However, if you leave it running, it will stay synced. This will save time when performing pktctl functions, such as folding and sending coins. If pktwallet has not been running for some time, it will need time to sync up to the current block from the time it last ran. As a safety precaution, don't forget to lock your wallet if you do keep it running. How often should I fold and why? \u00b6 The purpose of folding is to turn all your small payments (such as from mining) into quickly and easily spendable coins. If you are multi-pool mining and have rewards in every block, you will have roughly 1440 unconsolidated transactions per day - one for each block at a rate of ~ 1 block/min. If you do not fold these transactions, after awhile you'll have a huge amount of transactions to process if you wish to send the sum or portion thereof of these smaller transactions. So, while folding isn't required and will have no impact on mining if you do or do not, you're doing yourself a favor later by keeping the transactions as consolidated as possible. It is typical to fold as much as possible every day or every few days when you think about it, depending on your use case. It can also be scripted. Note that folding is a transaction itself. Depending on how much you have to fold, you may need to run the command many times. You also may need to wait for coins to confirm before folding more. Once the folding command fails or you see a very low number in the outputcount field from running ./bin/pktctl --wallet getaddressbalances 1 1 or on PKT block explorer under Unconsolidated Txns, you have successfully folded the best you can for that point in time.","title":"Installing PKT CLI Wallet (Mac/Windows/Linux)"},{"location":"wallet_setup/pkt-cli-wallet/#installing-pkt-cli-wallet-mac-windows-linux","text":"The command line PKT wallet","title":"Installing PKT CLI Wallet (Mac / Windows / Linux)"},{"location":"wallet_setup/pkt-cli-wallet/#first-time-installation-and-launching","text":"","title":"First Time Installation and Launching"},{"location":"wallet_setup/pkt-cli-wallet/#download-pktd","text":"","title":"Download pktd"},{"location":"wallet_setup/pkt-cli-wallet/#microsoft-windows","text":"Download the most recent zip archive suffixed with -windows.zip available from pktd releases page For example: pktd-v1.4.0-windows.zip Unarchive the content of the zip file Open the command prompt and navigate to the bin directory in the extracted archive For Example: cd Downloads\\pktd*\\bin Follow the instructions below but In place of ./bin/pktwallet , use pktwallet.exe In place of ./bin/pktctl , use pktctl.exe","title":"Microsoft Windows"},{"location":"wallet_setup/pkt-cli-wallet/#macos-and-linux","text":"Download one of the most recent packages available for Linux or MacOS from pktd releases page For example, for pktd-v1.4.0 release: For MacOS , after having downloaded pktd-v1.4.0-macos.pkg , install pktwallet and other utilities by clicking on the package icon in the Finder. For Linux , after having downloaded one of the following packages: pktd-v1.4.0-linux.deb (Debian or Ubuntu) pktd-v1.4.0-linux.rpm (Fedora or RedHat) pktd AUR package (Arch linux or Manjaro), install pktwallet and other utilities by clicking on the appropriate package icon or running an installation command","title":"MacOS and Linux"},{"location":"wallet_setup/pkt-cli-wallet/#creating-a-new-wallet","text":"To create a new PKT wallet, use the pktwallet --create command: ./bin/pktwallet --create You will be prompted to follow a few steps. Make sure you write your seed words on paper so that you can recover your funds even if your computer is damaged. Do not skip this step. You will thank yourself later. Keep it secret. Keep it safe.","title":"Creating a New Wallet"},{"location":"wallet_setup/pkt-cli-wallet/#launching-pktwallet","text":"After creating your wallet, you can launch pktwallet with: ./bin/pktwallet Watch the output from the logs and when you see a log line like this: 1608294386 [INF] headerlogger.go:64 Processed 1 block in the last 24.82s (height 702781, 2020-12-18 13:26:01 +0100 CET) Compare the height number in the log line (e.g. 702781) to the number in the pkt block explorer to see when your wallet is up to date. A complete sync from a new installation can take 12+ hours. During this time, the balance in your wallet will not be accurate and you will be unable to transact. You may, however, proceed with creating an address while syncing, as detailed below.","title":"Launching pktwallet"},{"location":"wallet_setup/pkt-cli-wallet/#creating-a-new-pkt-address","text":"While pktwallet is running in the background (or in another terminal), use the following command: ./bin/pktctl --wallet getnewaddress You should see a series of numbers and letters beginning with pkt1 . This is your newly created PKT address which you can use for receiving coins. If you need to view it after creation, the address, along with the balance, can be seen in the output from running: ./bin/pktctl --wallet getaddressbalances 1 1 NOTE : Every time you use getnewaddress , the address you receive must be remembered by pktwallet forever. So, only use it when you actually need an address.","title":"Creating a New PKT Address"},{"location":"wallet_setup/pkt-cli-wallet/#how-to-install-the-pkt-world-wallet-windows-only","text":"Download the PKT World Wallet Follow the installation instructions Launch wallet Create a new wallet Enter a wallet passphrase. Make sure to save your passphrase in a safe place. Write down your wallet seed. It is very important to keep your seed in a safe place To generate a new PKT address, click Wallet. Generate new address To begin mining using the PKT World Wallet, click Miner Start Mining","title":"How to install the PKT World Wallet (Windows only)"},{"location":"wallet_setup/pkt-cli-wallet/#how-to-install-a-cli-wallet","text":"If you already have a wallet created on your computer called wallet.db you will need to create a new wallet by following these steps: Download pktd-v1.5.1-macos.pkg Run the installation Open Terminal Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktwallet --create --wallet xxxx xxxx is the name of the wallet i.e. wallet personal Make sure to write this down for your notes Enter passphrase or leave empty Make sure to write this down for you notes Do NOT add additional layer of security Copy down your seed. If your wallet is destroyed, you can recover it as long as you have this seed and your wallet passphrase. Please keep in mind that anyone who has access to the seed only needs to guess your wallet passphrase to access your funds. Follow the instructions to finalize wallet","title":"How to install a CLI Wallet"},{"location":"wallet_setup/pkt-cli-wallet/#how-to-start-up-cli-wallet","text":"Open terminal Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktwallet --wallet (whatever you named your wallet) i.e wallet personal","title":"How to start up CLI Wallet"},{"location":"wallet_setup/pkt-cli-wallet/#how-to-create-new-pkt-wallet-address","text":"Make sure you have the CLI wallet running in a separate terminal window Open Terminal Enter command: $ cd pktd Enter command: $ ~/pktd/bin/pktctl --wallet getnewaddress Save your address in a safe place that is easily accessible","title":"How to create new PKT wallet address"},{"location":"wallet_setup/pkt-cli-wallet/#how-to-send-pkt-from-your-cli-wallet","text":"Make sure you have the CLI wallet running in a separate terminal window Command click on file to open Open terminal Enter command: $ cd pktd Enter Command: $ ~/pktd/pktd/bin/pktctl --wallet sendfrom pkt1xxxxx $$$$ '[\"pkt1xxxxx\"]' xxxxx = PKT address you want to send from and to $$$$ = amount of pkt you want to send","title":"How to send PKT from your CLI wallet"},{"location":"wallet_setup/pkt-cli-wallet/#how-to-install-a-cli-wallet-from-seed","text":"If you already have a wallet created on your computer called wallet.db you will need to create a new wallet by following these steps: Download pktd-v1.5.1-macos.pkg Command click on file to open Run the installation Open Terminal Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktwallet --create --wallet xxxx xxxx is the name of the wallet i.e. wallet personal Make sure to write this down for your notes Enter passphrase or leave empty Make sure to write this down for you notes Do NOT add additional layer of security Enter seed Start up wallet (see instructions above) Open new terminal window Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktctl --wallet getnewaddress repeat until you find receive (each of) your recovered wallet address(es) Enter the command: $ ~/pktd/bin/pktctl --wallet resync This will resync the wallet to the blockchain (takes at least 24 hours) Enter the command: $ ~/pktd/bin/pktctl --wallet getaddressbalances 1 1 this is how you view all your (sub)wallet balances","title":"How to install a CLI Wallet from Seed"},{"location":"wallet_setup/pkt-cli-wallet/#using-your-wallet","text":"pktctl is the program that interfaces with a running pktwallet instance. pktctl functions will not work if pktwallet is not running and accessible. Some functions will be limited until pktwallet is fully synchronized. Some functions require the wallet being unlocked before executing.","title":"Using Your Wallet"},{"location":"wallet_setup/pkt-cli-wallet/#getting-your-balance","text":"You can check your current PKT balance using pktctl or you can check the balances of each of your addresses if you have more than one. ./bin/pktctl --wallet getbalance or: ./bin/pktctl --wallet getaddressbalances getaddressbalances by itself will not show 0 balance addresses you may have created. To show these addresses, use: ./bin/pktctl --wallet getaddressbalances 1 1 For more explanation of the meaning of the output of getaddressbalances , use: ./bin/pktctl --wallet help getaddressbalances","title":"Getting Your Balance"},{"location":"wallet_setup/pkt-cli-wallet/#unlocking-wallet","text":"While many functions can be performed while the wallet is locked, other functions first require the wallet to be unlocked, including sending PKT and folding. The passphrase used to unlock the wallet was set when creating the wallet. To unlock your wallet for 120 seconds (this can be changed to your liking), use: ./bin/pktctl --wallet walletpassphrase 120 To keep your wallet unlocked, use: ./bin/pktctl --wallet walletpassphrase 0 If using 0 as in the previous example to keep your wallet indefinitely unlocked, it will stay unlocked until you either restart pktwallet or run: ./bin/pktctl --wallet walletlock NOTE: Special characters (e.g., !, #, & *) in your passphrase may be incorrectly interpreted by your shell. You may need to wrap your passphrase in quotes. ./bin/pktctl --wallet walletpassphrase 'suP3r_S3cReT^P@s5W0Rd!' 120","title":"Unlocking Wallet"},{"location":"wallet_setup/pkt-cli-wallet/#sending-pkt","text":"You can send PKT using the sendtoaddress command, but first you must unlock your wallet for sending, as shown in the previous step. To send cjd a 10 PKT tip: ./bin/pktctl --wallet sendtoaddress pkt1qt8xe7dwpelngtcpsgn5nkj3pwwdm7gf3l4auax 10","title":"Sending PKT"},{"location":"wallet_setup/pkt-cli-wallet/#sending-pkt-from-specific-address","text":"pktwallet gives you control over which addresses are used for making a payment. This means you can keep different PKT in your wallet separate, for example separating business transactions from personal transactions. NOTE : PKT is not a \"privacy coin\", so transactions are still shown in the blockchain like with Bitcoin. Unlock wallet: ./bin/pktctl --wallet walletpassphrase 60 Send 10 PKT to \"their address\" from \"your address\": ./bin/pktctl --wallet sendfrom 10 '[\"\"]' Notice the '[\" . This is because the last argument is actually a quoted JSON array . This means you can use multiple addresses as the source of a payment. For example: ./bin/pktctl --wallet sendfrom 10 '[\"\", \"\"]' Windows users require unique formatting for command prompt: pktctl.exe --wallet sendfrom 10 [\\\"\\\"]","title":"Sending PKT from Specific Address"},{"location":"wallet_setup/pkt-cli-wallet/#sweeping-an-address","text":"With pktwallet, sending 0 PKT has special significance in that it will send \"as much PKT as possible\". To sweep address into , you can use the following command: ./bin/pktctl --wallet sendfrom 0 '[\"\"]' Windows: pktctl.exe --wallet sendfrom 0 [\\\"\\\"] NOTE : Sweeping an address will send as much PKT as possible , which is not necessarily all PKT in that address. You may need to sweep multiple times before the address is empty.","title":"Sweeping an Address"},{"location":"wallet_setup/pkt-cli-wallet/#folding-coins","text":"If you are the recipient of many transactions, such as is the case in mining, you may not be able to spend all of them at once. This is similar to someone who is paid in pennies having a difficult time using the pennies to buy a car. To solve this issue, you can consolidate all of the coins which were paid to you by folding . Folding is sweeping an address to itself . Just like in sweeping, you may need to run the command many times before you have completely folded. See FAQs for more detail. For example: ./bin/pktctl --wallet sendfrom
    0 '[\"
    \"]' Windows: pktctl.exe --wallet sendfrom
    0 [\\\"
    \\\"]","title":"Folding Coins"},{"location":"wallet_setup/pkt-cli-wallet/#alternative-gui-wallets","text":"Electrum for PKT (Windows, MacOS, Linux) NOTE: Electrum is not appropriate for mining. Do NOT mine into an electrum wallet! PKT World Wallet (Windows) Zulu Wallet (MacOS)","title":"Alternative GUI Wallets"},{"location":"wallet_setup/pkt-cli-wallet/#faqs","text":"","title":"FAQs"},{"location":"wallet_setup/pkt-cli-wallet/#i-have-several-machines-mining-do-i-need-the-wallet-running-on-each-machine","text":"NO! In fact, the wallet doesn't need to be running at all to mine, but you do need to ensure you have control of the address you are mining to.","title":"I have several machines mining, do I need the wallet running on each machine?"},{"location":"wallet_setup/pkt-cli-wallet/#should-i-leave-pktwallet-running","text":"It is not a requirement to have pktwallet running to mine. However, if you leave it running, it will stay synced. This will save time when performing pktctl functions, such as folding and sending coins. If pktwallet has not been running for some time, it will need time to sync up to the current block from the time it last ran. As a safety precaution, don't forget to lock your wallet if you do keep it running.","title":"Should I leave pktwallet running?"},{"location":"wallet_setup/pkt-cli-wallet/#how-often-should-i-fold-and-why","text":"The purpose of folding is to turn all your small payments (such as from mining) into quickly and easily spendable coins. If you are multi-pool mining and have rewards in every block, you will have roughly 1440 unconsolidated transactions per day - one for each block at a rate of ~ 1 block/min. If you do not fold these transactions, after awhile you'll have a huge amount of transactions to process if you wish to send the sum or portion thereof of these smaller transactions. So, while folding isn't required and will have no impact on mining if you do or do not, you're doing yourself a favor later by keeping the transactions as consolidated as possible. It is typical to fold as much as possible every day or every few days when you think about it, depending on your use case. It can also be scripted. Note that folding is a transaction itself. Depending on how much you have to fold, you may need to run the command many times. You also may need to wait for coins to confirm before folding more. Once the folding command fails or you see a very low number in the outputcount field from running ./bin/pktctl --wallet getaddressbalances 1 1 or on PKT block explorer under Unconsolidated Txns, you have successfully folded the best you can for that point in time.","title":"How often should I fold and why?"},{"location":"wallet_setup/pkt-wallet-setup/","text":"How to setup a PKT Wallet \u00b6 PKT is its own unique blockchain and only interacts with specific wallets that support PKT. There are several wallet choices that may be applicable based on your needs. If you are planning on mining PKT, you will have to choose a wallet that supports mining. If you attempt to mine PKT into a wallet that does not support mining, the wallet will break and require substantial troubleshooting. Below is a list of the various PKT wallets. Please pay attention and choose the wallet that services your needs. PKT Electrum (Mac/PC) - PKT Electrum is not for mining. This is a good lightweight wallet for making and receiving payments. Click [here] for setup instructions. PKT.World Wallet (Mac/PC) - PKT.World wallet is a mining wallet for MacOS and Windows. The wallet has a clean user interface. The Windows version has a built-in miner. Click [here] for setup instructions. PKT Zulu Wallet (Mac) - PKT Zulu wallet is an early mining wallet for MacOS. This wallet is no longer community supported. It is recommended to migrate coins and mining to PKT.World wallet. Click [here] for setup instructions. PKT CLI Wallet (Mac/PC/Linux) - The PKT CLI wallet is a powerful command line mining wallet. It has greater scalability and privacy features. Many wallet developers fork PKT CLI for their wallet development. However, this wallet requires installing pktd and has no graphical user interface. Must be proficient in the command line to use this wallet. Click here for setup instructions.","title":"How to setup a PKT Wallet"},{"location":"wallet_setup/pkt-wallet-setup/#how-to-setup-a-pkt-wallet","text":"PKT is its own unique blockchain and only interacts with specific wallets that support PKT. There are several wallet choices that may be applicable based on your needs. If you are planning on mining PKT, you will have to choose a wallet that supports mining. If you attempt to mine PKT into a wallet that does not support mining, the wallet will break and require substantial troubleshooting. Below is a list of the various PKT wallets. Please pay attention and choose the wallet that services your needs. PKT Electrum (Mac/PC) - PKT Electrum is not for mining. This is a good lightweight wallet for making and receiving payments. Click [here] for setup instructions. PKT.World Wallet (Mac/PC) - PKT.World wallet is a mining wallet for MacOS and Windows. The wallet has a clean user interface. The Windows version has a built-in miner. Click [here] for setup instructions. PKT Zulu Wallet (Mac) - PKT Zulu wallet is an early mining wallet for MacOS. This wallet is no longer community supported. It is recommended to migrate coins and mining to PKT.World wallet. Click [here] for setup instructions. PKT CLI Wallet (Mac/PC/Linux) - The PKT CLI wallet is a powerful command line mining wallet. It has greater scalability and privacy features. Many wallet developers fork PKT CLI for their wallet development. However, this wallet requires installing pktd and has no graphical user interface. Must be proficient in the command line to use this wallet. Click here for setup instructions.","title":"How to setup a PKT Wallet"},{"location":"wallet_setup/pkt-world-wallet/","text":"Installing the PKT.World Wallet (Mac/Windows) \u00b6 The PKT.World wallet is one of these easiest ways to store your PKT cash. The PKT.World wallet works on both Windows and MacOS. However, the Windows wallet is also a PKT miner, while the MacOS version is only a wallet. The wallet features an easy to use graphical user interface with ongoing support from the PKT.World mining pool operator. Simply follow this link [here] to download the wallet from the PKT.World website. It is important to keep your seed and password written down in a safe place where you will remember it.","title":"Installing PKT.World Wallet (Mac/Windows)"},{"location":"wallet_setup/pkt-world-wallet/#installing-the-pktworld-wallet-macwindows","text":"The PKT.World wallet is one of these easiest ways to store your PKT cash. The PKT.World wallet works on both Windows and MacOS. However, the Windows wallet is also a PKT miner, while the MacOS version is only a wallet. The wallet features an easy to use graphical user interface with ongoing support from the PKT.World mining pool operator. Simply follow this link [here] to download the wallet from the PKT.World website. It is important to keep your seed and password written down in a safe place where you will remember it.","title":"Installing the PKT.World Wallet (Mac/Windows)"},{"location":"wallet_setup/pkt-zulu-wallet/","text":"Installing PKT Zulu Wallet (Mac) \u00b6 Paste these instructions, but change the first note: pktwallet The PKT Zulu Wallet is an early mining wallet that only works on MacOS. However, this wallet is only compatible with Big Sur MacOS version 11. Please note, this wallet is not currently being maintained by the community, so if setting up a new wallet use the PKT.World wallet instead. If you have a PKT Zulu wallet, it is recommended to transfer your coins to another wallet as soon as possible. Please note, if you are already using PKT Zulu wallet, then when you install the PKT.World wallet for MacOS [here], it may automatically recognize your wallet.db file on your computer. These instructions below are still available for people that currently have this wallet installed. It is important to keep your seed and password written down in a safe place where you will remember it.","title":"Installing PKT Zulu Wallet (Mac)"},{"location":"wallet_setup/pkt-zulu-wallet/#installing-pkt-zulu-wallet-mac","text":"Paste these instructions, but change the first note: pktwallet The PKT Zulu Wallet is an early mining wallet that only works on MacOS. However, this wallet is only compatible with Big Sur MacOS version 11. Please note, this wallet is not currently being maintained by the community, so if setting up a new wallet use the PKT.World wallet instead. If you have a PKT Zulu wallet, it is recommended to transfer your coins to another wallet as soon as possible. Please note, if you are already using PKT Zulu wallet, then when you install the PKT.World wallet for MacOS [here], it may automatically recognize your wallet.db file on your computer. These instructions below are still available for people that currently have this wallet installed. It is important to keep your seed and password written down in a safe place where you will remember it.","title":"Installing PKT Zulu Wallet (Mac)"},{"location":"wallet_setup/wallet-faq/","text":"PKT Documentation \u00b6 Documentation for the PKT project Wallet setup \u00b6 There are several wallets which you can choose from, the easiest to set up are PKT Electrum which has a Graphical UI and supports Windows, Mac and Linux. PKT Wallet which has a Graphical UI and supports MacOS and works great with miners. Pkt.world Wallet which has a Graphical UI for Windows, works with miners and includes a built-in miner. You can also setup PKT Wallet which is command line only but has greater scalability and privacy features. Mining \u00b6 PKT is mined using the PacketCrypt bandwidth hard mining algorithm. You can learn how to mine on the Mining page. Running a pktd instance \u00b6 You can setup a pktd instance using the instructions on pktd . Help and Community \u00b6 To get help with the technologies in the PKT project or to hang out in the community join us on the PKT Chat project chat.","title":"PKT Documentation"},{"location":"wallet_setup/wallet-faq/#pkt-documentation","text":"Documentation for the PKT project","title":"PKT Documentation"},{"location":"wallet_setup/wallet-faq/#wallet-setup","text":"There are several wallets which you can choose from, the easiest to set up are PKT Electrum which has a Graphical UI and supports Windows, Mac and Linux. PKT Wallet which has a Graphical UI and supports MacOS and works great with miners. Pkt.world Wallet which has a Graphical UI for Windows, works with miners and includes a built-in miner. You can also setup PKT Wallet which is command line only but has greater scalability and privacy features.","title":"Wallet setup"},{"location":"wallet_setup/wallet-faq/#mining","text":"PKT is mined using the PacketCrypt bandwidth hard mining algorithm. You can learn how to mine on the Mining page.","title":"Mining"},{"location":"wallet_setup/wallet-faq/#running-a-pktd-instance","text":"You can setup a pktd instance using the instructions on pktd .","title":"Running a pktd instance"},{"location":"wallet_setup/wallet-faq/#help-and-community","text":"To get help with the technologies in the PKT project or to hang out in the community join us on the PKT Chat project chat.","title":"Help and Community"}]} \ No newline at end of file +{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"PKT Documentation \u00b6 Documentation for the PKT project Wallet setup \u00b6 There are several wallets which you can choose from, the easiest to set up are PKT Electrum which has a Graphical UI and supports Windows, Mac and Linux. PKT Wallet which has a Graphical UI and supports MacOS and works great with miners. Pkt.world Wallet which has a Graphical UI for Windows, works with miners and includes a built-in miner. You can also setup PKT Wallet which is command line only but has greater scalability and privacy features. Mining \u00b6 PKT is mined using the PacketCrypt bandwidth hard mining algorithm. You can learn how to mine on the Mining page. Running a pktd instance \u00b6 You can setup a pktd instance using the instructions on pktd . Help and Community \u00b6 To get help with the technologies in the PKT project or to hang out in the community join us on the PKT Chat project chat.","title":"Home"},{"location":"#pkt-documentation","text":"Documentation for the PKT project","title":"PKT Documentation"},{"location":"#wallet-setup","text":"There are several wallets which you can choose from, the easiest to set up are PKT Electrum which has a Graphical UI and supports Windows, Mac and Linux. PKT Wallet which has a Graphical UI and supports MacOS and works great with miners. Pkt.world Wallet which has a Graphical UI for Windows, works with miners and includes a built-in miner. You can also setup PKT Wallet which is command line only but has greater scalability and privacy features.","title":"Wallet setup"},{"location":"#mining","text":"PKT is mined using the PacketCrypt bandwidth hard mining algorithm. You can learn how to mine on the Mining page.","title":"Mining"},{"location":"#running-a-pktd-instance","text":"You can setup a pktd instance using the instructions on pktd .","title":"Running a pktd instance"},{"location":"#help-and-community","text":"To get help with the technologies in the PKT project or to hang out in the community join us on the PKT Chat project chat.","title":"Help and Community"},{"location":"PKT_FAQ/","text":"PKT FAQ \u00b6 This is a community defined FAQ, edit this page to improve it. General \u00b6 What is PKT? \u00b6 PKT allows users to monetize their unused internet bandwidth. By participating in the PKT Network you are helping to build a faster, stronger, and more secure, decentralized network. What is PKT Cash? \u00b6 PKT is a native mined coin based on an open source project. There are multiple companies in the PKT ecosystem but no company \"behind PKT.\" What wallets are available? \u00b6 If you're not mining, the best wallet is PKT Electrum , which was developed as part of a Network Steward funded project and supports Windows, Mac and Linux. However, mining into electrum will break it and if you do it, you will need to export your keys to recover funds. If you use Microsoft Windows, the best wallet to use is PKT.world wallet If you use Mac and want to mine, you can use Zulu Wallet If you are using a server, you can use the CLI wallet which is the base code for the PKT.world wallet and Zulu wallet. There is an ongoing wallet called MatterFi which is based on the powerful OpenTransactions technology. You are invited to help beta-test this wallet in #matterfi on pkt.chat. Where can I buy or sell PKT? \u00b6 Currently there are two ways to buy and sell, you can buy wrapped PKT on pancakeswap and then un-wrap it using the ODAPP (NOTE: in order to use wrapped PKT, you will need Binance Smart Chain BNB to pay gas fees. Also note that ODAPP charges 3.5% when wrapping or unwrapping) If you would like a more human experience of buying or selling, you can come to ye ol' telegram chat where PKT has been traded since the beginning. Remember that telegram is a place where scammers lurk, so always read and follow the guidelines and always use escrow, even after you have traded with somebody multiple times. What is the path towards being publicly listed on exchanges? \u00b6 PKT is a decentralized project like Bitcoin, not a centralized token. Community members are having conversations with different exchanges and you can do it too. There are no more details at this time about the particular listing initiatives. The differentiating factors vs. Bitcoin and other crypto coins? \u00b6 The differences from Bitcoin are: PacketCrypt bandwidth hard proof of work replaces SHA-256 1 minute block time 6 billion coins total Mining yields decrease 10% every 100 days in what is called the decimation 20% of each mined block goes to the Network Steward wallet, which funds R&D of the ecosystem Vision \u00b6 What is value proposition of PKT? \u00b6 The PKT project is focused on building a decentralized bandwidth marketplace to decouple the business and technical aspects of internet service from the physical aspect of maintaining infrastructure. The fundamental value is division of labor and lowering the barrier of entry for internet service competition. What is a Cloud ISP? \u00b6 There is an explanation video about Cloud ISPs on Twitter. The role of a Cloud ISP is to perform the technical and administrative aspects of internet service so that the aspects of infrastructure operation can be done by individuals, small businesses and community groups. What do you see as the greatest challenge to PKTs long-term success? \u00b6 Historically, crypto projects achieve the best results when they are focused on use cases and utility. PKT is focusing on building a decentralized bandwidth marketplace where people can earn PKT with their internet and use PKT to pay for connectivity. The greatest challenge is getting the next billion people connected to the internet. What are the applications and software currently being explored? \u00b6 A free to use VPN service called AnodeVPN will be launched in 2021, and users can pay for their VPN speed with PKT Cash. Internet bandwidth sharing and mesh networking are also currently in the stages of development. Mining \u00b6 How is PKT mined? \u00b6 PKT is mined using the novel PacketCrypt bandwidth-hard mining algorithm which requires bandwidth to mine. It uses a combination of CPU and bandwidth, you get an advantage by working together with other miners which requires bandwidth. How will the growth in mining impact the coin? \u00b6 As more people mine PacketCrypt, they will need to invest in more network infrastructure which will become useful later on for making the internet faster and more accessible. What wallet do I use for mining? \u00b6 For mining it's recommended to use the command line PKTWallet due to the amount of mining transactions and it's ability to scale. If you use a Mac then you can also use the PKT-Cash-Wallet for MacOS. Is there an easy way to start mining? \u00b6 There are mining instructions for mining on the PKT website. PktPal is a business in the community which offers turn-key mining solutions. Do miners mining on a single pool have any benefit over miners mining on multi pool? \u00b6 Multi-pool mining means submitting the exact same announcements to multiple pools. So if you have the bandwidth available it will always benefit you to mine in all of the major pools. Network Steward \u00b6 What is the Network Steward? \u00b6 The Network Steward is part of the consensus rules of the PKT blockchain. 20% of every newly mined block goes to a wallet address and then those coins are 100% paid out in grants to help build open-source technology and develop the PKT Network. Network Steward funds must be deployed within 90 days or else they are burned. This address was initially set to a multi-signature group, but it can be changed by a PoS based vote process. Who is the Network Steward currently? \u00b6 A group of 5 volunteers including the original author of the code. More information can be found [here]: (https://pkt.cash/network-steward) How is the (current) Network Steward using the funds? \u00b6 The Network Steward follows a project evaluation process. No funds have ever been deployed except to fund projects which were proposed by members of the public in an open competitive process. The Network Steward operates with full transparency. Every transaction made by the Network Steward can be seen in the block explorer and is refered to in the Network Steward's github repository explaining the project which that transaction helped to fund. Has the Network Steward burned any funds? \u00b6 You can check out the stats on burned coins in the block explorer Network Steward page . How do I submit a proposal? \u00b6 There are currently two ways to propose a project to the PKT Network Steward, if your project is large and has the benefit of accountants to be able to verify that the money has been spent appropriately, you can make a proposal directly to the NS through the NS github Network Steward's Github . The NS opens calls from time to time with a specified budget and during these calls anyone can apply. If you want to propose a smaller project and have the accounting and official reporting managed for you, you can propose to the User Operated Internet fund which is funded by the Network Steward but is administored by NLnet, a well respected public benefit organization which is experienced at managing these types of projects. Dilligence \u00b6 Who is the creator? Is he actively involved? What's his ownership? \u00b6 PKT was created by Caleb James DeLisle, the creator of cjdns. Cjdns is the only decentralized mesh networking protocol which is designed to function in even if some of the nodes in the network are adversarial. Caleb has been mining PKT similarly to everybody else in the project. Who stands to benefit the most from growth and adaption? \u00b6 The early miners and adopters of PKT will benefit greatly. PKT also benefits everybody because it will lead to a lower cost and highly competitive internet service ecosystem. Are there any regulatory or compliance liabilities? \u00b6 PKT is a fully decentralized fork of Bitcoin, so it is similarly considered to be a commodity. What legal disclosures need to made with investments into this? Or are there none? \u00b6 Because PKT is a fully decentralized clone of the Bitcoin codebase, the legal and regulatory framing is probably similar. Communication \u00b6 Has any branding or marketing already been completed? \u00b6 PKT is a decentralized project so there is no official brand for PKT, however the website pkt.cash, logos, and other materials were developed as part of a Network Steward funded project and are usable under the Creative Commons license. Are any brand ambassadors already engaged? \u00b6 PKT is not a centralized project so anybody can be an ambassador. There are a number of companies and initiatives which currently exist in the PKT ecosystem including AnodeVPN and Pkt Pal. Commercial \u00b6 How can I contact the PKT Team \u00b6 You are the PKT team, PKT is a fully decentralized project like Bitcoin, so everyone is the team. The bad news is there is no central authority who can write you a check, but the good news is there are a few businesses in the PKT ecosystem who might be prepared to buy your services. See PKT Commercial for a (non-exhaustive) list. Can I build X with PKT? \u00b6 YES , the PKT community encourages all types of (legal, responsible) business activity in the PKT ecosystem. The ODAPP bridge was created by a community member and was not in the original PKT vision but this bridge is now an important part of the infrastructure of the PKT ecosystem. You can also build your commercial venture and the we in the PKT community will do what we can to help you be successful.","title":"PKT FAQ"},{"location":"PKT_FAQ/#pkt-faq","text":"This is a community defined FAQ, edit this page to improve it.","title":"PKT FAQ"},{"location":"PKT_FAQ/#general","text":"","title":"General"},{"location":"PKT_FAQ/#what-is-pkt","text":"PKT allows users to monetize their unused internet bandwidth. By participating in the PKT Network you are helping to build a faster, stronger, and more secure, decentralized network.","title":"What is PKT?"},{"location":"PKT_FAQ/#what-is-pkt-cash","text":"PKT is a native mined coin based on an open source project. There are multiple companies in the PKT ecosystem but no company \"behind PKT.\"","title":"What is PKT Cash?"},{"location":"PKT_FAQ/#what-wallets-are-available","text":"If you're not mining, the best wallet is PKT Electrum , which was developed as part of a Network Steward funded project and supports Windows, Mac and Linux. However, mining into electrum will break it and if you do it, you will need to export your keys to recover funds. If you use Microsoft Windows, the best wallet to use is PKT.world wallet If you use Mac and want to mine, you can use Zulu Wallet If you are using a server, you can use the CLI wallet which is the base code for the PKT.world wallet and Zulu wallet. There is an ongoing wallet called MatterFi which is based on the powerful OpenTransactions technology. You are invited to help beta-test this wallet in #matterfi on pkt.chat.","title":"What wallets are available?"},{"location":"PKT_FAQ/#where-can-i-buy-or-sell-pkt","text":"Currently there are two ways to buy and sell, you can buy wrapped PKT on pancakeswap and then un-wrap it using the ODAPP (NOTE: in order to use wrapped PKT, you will need Binance Smart Chain BNB to pay gas fees. Also note that ODAPP charges 3.5% when wrapping or unwrapping) If you would like a more human experience of buying or selling, you can come to ye ol' telegram chat where PKT has been traded since the beginning. Remember that telegram is a place where scammers lurk, so always read and follow the guidelines and always use escrow, even after you have traded with somebody multiple times.","title":"Where can I buy or sell PKT?"},{"location":"PKT_FAQ/#what-is-the-path-towards-being-publicly-listed-on-exchanges","text":"PKT is a decentralized project like Bitcoin, not a centralized token. Community members are having conversations with different exchanges and you can do it too. There are no more details at this time about the particular listing initiatives.","title":"What is the path towards being publicly listed on exchanges?"},{"location":"PKT_FAQ/#the-differentiating-factors-vs-bitcoin-and-other-crypto-coins","text":"The differences from Bitcoin are: PacketCrypt bandwidth hard proof of work replaces SHA-256 1 minute block time 6 billion coins total Mining yields decrease 10% every 100 days in what is called the decimation 20% of each mined block goes to the Network Steward wallet, which funds R&D of the ecosystem","title":"The differentiating factors vs. Bitcoin and other crypto coins?"},{"location":"PKT_FAQ/#vision","text":"","title":"Vision"},{"location":"PKT_FAQ/#what-is-value-proposition-of-pkt","text":"The PKT project is focused on building a decentralized bandwidth marketplace to decouple the business and technical aspects of internet service from the physical aspect of maintaining infrastructure. The fundamental value is division of labor and lowering the barrier of entry for internet service competition.","title":"What is value proposition of PKT?"},{"location":"PKT_FAQ/#what-is-a-cloud-isp","text":"There is an explanation video about Cloud ISPs on Twitter. The role of a Cloud ISP is to perform the technical and administrative aspects of internet service so that the aspects of infrastructure operation can be done by individuals, small businesses and community groups.","title":"What is a Cloud ISP?"},{"location":"PKT_FAQ/#what-do-you-see-as-the-greatest-challenge-to-pkts-long-term-success","text":"Historically, crypto projects achieve the best results when they are focused on use cases and utility. PKT is focusing on building a decentralized bandwidth marketplace where people can earn PKT with their internet and use PKT to pay for connectivity. The greatest challenge is getting the next billion people connected to the internet.","title":"What do you see as the greatest challenge to PKTs long-term success?"},{"location":"PKT_FAQ/#what-are-the-applications-and-software-currently-being-explored","text":"A free to use VPN service called AnodeVPN will be launched in 2021, and users can pay for their VPN speed with PKT Cash. Internet bandwidth sharing and mesh networking are also currently in the stages of development.","title":"What are the applications and software currently being explored?"},{"location":"PKT_FAQ/#mining","text":"","title":"Mining"},{"location":"PKT_FAQ/#how-is-pkt-mined","text":"PKT is mined using the novel PacketCrypt bandwidth-hard mining algorithm which requires bandwidth to mine. It uses a combination of CPU and bandwidth, you get an advantage by working together with other miners which requires bandwidth.","title":"How is PKT mined?"},{"location":"PKT_FAQ/#how-will-the-growth-in-mining-impact-the-coin","text":"As more people mine PacketCrypt, they will need to invest in more network infrastructure which will become useful later on for making the internet faster and more accessible.","title":"How will the growth in mining impact the coin?"},{"location":"PKT_FAQ/#what-wallet-do-i-use-for-mining","text":"For mining it's recommended to use the command line PKTWallet due to the amount of mining transactions and it's ability to scale. If you use a Mac then you can also use the PKT-Cash-Wallet for MacOS.","title":"What wallet do I use for mining?"},{"location":"PKT_FAQ/#is-there-an-easy-way-to-start-mining","text":"There are mining instructions for mining on the PKT website. PktPal is a business in the community which offers turn-key mining solutions.","title":"Is there an easy way to start mining?"},{"location":"PKT_FAQ/#do-miners-mining-on-a-single-pool-have-any-benefit-over-miners-mining-on-multi-pool","text":"Multi-pool mining means submitting the exact same announcements to multiple pools. So if you have the bandwidth available it will always benefit you to mine in all of the major pools.","title":"Do miners mining on a single pool have any benefit over miners mining on multi pool?"},{"location":"PKT_FAQ/#network-steward","text":"","title":"Network Steward"},{"location":"PKT_FAQ/#what-is-the-network-steward","text":"The Network Steward is part of the consensus rules of the PKT blockchain. 20% of every newly mined block goes to a wallet address and then those coins are 100% paid out in grants to help build open-source technology and develop the PKT Network. Network Steward funds must be deployed within 90 days or else they are burned. This address was initially set to a multi-signature group, but it can be changed by a PoS based vote process.","title":"What is the Network Steward?"},{"location":"PKT_FAQ/#who-is-the-network-steward-currently","text":"A group of 5 volunteers including the original author of the code. More information can be found [here]: (https://pkt.cash/network-steward)","title":"Who is the Network Steward currently?"},{"location":"PKT_FAQ/#how-is-the-current-network-steward-using-the-funds","text":"The Network Steward follows a project evaluation process. No funds have ever been deployed except to fund projects which were proposed by members of the public in an open competitive process. The Network Steward operates with full transparency. Every transaction made by the Network Steward can be seen in the block explorer and is refered to in the Network Steward's github repository explaining the project which that transaction helped to fund.","title":"How is the (current) Network Steward using the funds?"},{"location":"PKT_FAQ/#has-the-network-steward-burned-any-funds","text":"You can check out the stats on burned coins in the block explorer Network Steward page .","title":"Has the Network Steward burned any funds?"},{"location":"PKT_FAQ/#how-do-i-submit-a-proposal","text":"There are currently two ways to propose a project to the PKT Network Steward, if your project is large and has the benefit of accountants to be able to verify that the money has been spent appropriately, you can make a proposal directly to the NS through the NS github Network Steward's Github . The NS opens calls from time to time with a specified budget and during these calls anyone can apply. If you want to propose a smaller project and have the accounting and official reporting managed for you, you can propose to the User Operated Internet fund which is funded by the Network Steward but is administored by NLnet, a well respected public benefit organization which is experienced at managing these types of projects.","title":"How do I submit a proposal?"},{"location":"PKT_FAQ/#dilligence","text":"","title":"Dilligence"},{"location":"PKT_FAQ/#who-is-the-creator-is-he-actively-involved-whats-his-ownership","text":"PKT was created by Caleb James DeLisle, the creator of cjdns. Cjdns is the only decentralized mesh networking protocol which is designed to function in even if some of the nodes in the network are adversarial. Caleb has been mining PKT similarly to everybody else in the project.","title":"Who is the creator? Is he actively involved? What's his ownership?"},{"location":"PKT_FAQ/#who-stands-to-benefit-the-most-from-growth-and-adaption","text":"The early miners and adopters of PKT will benefit greatly. PKT also benefits everybody because it will lead to a lower cost and highly competitive internet service ecosystem.","title":"Who stands to benefit the most from growth and adaption?"},{"location":"PKT_FAQ/#are-there-any-regulatory-or-compliance-liabilities","text":"PKT is a fully decentralized fork of Bitcoin, so it is similarly considered to be a commodity.","title":"Are there any regulatory or compliance liabilities?"},{"location":"PKT_FAQ/#what-legal-disclosures-need-to-made-with-investments-into-this-or-are-there-none","text":"Because PKT is a fully decentralized clone of the Bitcoin codebase, the legal and regulatory framing is probably similar.","title":"What legal disclosures need to made with investments into this? Or are there none?"},{"location":"PKT_FAQ/#communication","text":"","title":"Communication"},{"location":"PKT_FAQ/#has-any-branding-or-marketing-already-been-completed","text":"PKT is a decentralized project so there is no official brand for PKT, however the website pkt.cash, logos, and other materials were developed as part of a Network Steward funded project and are usable under the Creative Commons license.","title":"Has any branding or marketing already been completed?"},{"location":"PKT_FAQ/#are-any-brand-ambassadors-already-engaged","text":"PKT is not a centralized project so anybody can be an ambassador. There are a number of companies and initiatives which currently exist in the PKT ecosystem including AnodeVPN and Pkt Pal.","title":"Are any brand ambassadors already engaged?"},{"location":"PKT_FAQ/#commercial","text":"","title":"Commercial"},{"location":"PKT_FAQ/#how-can-i-contact-the-pkt-team","text":"You are the PKT team, PKT is a fully decentralized project like Bitcoin, so everyone is the team. The bad news is there is no central authority who can write you a check, but the good news is there are a few businesses in the PKT ecosystem who might be prepared to buy your services. See PKT Commercial for a (non-exhaustive) list.","title":"How can I contact the PKT Team"},{"location":"PKT_FAQ/#can-i-build-x-with-pkt","text":"YES , the PKT community encourages all types of (legal, responsible) business activity in the PKT ecosystem. The ODAPP bridge was created by a community member and was not in the original PKT vision but this bridge is now an important part of the infrastructure of the PKT ecosystem. You can also build your commercial venture and the we in the PKT community will do what we can to help you be successful.","title":"Can I build X with PKT?"},{"location":"cjdns_websites/","text":"Setup your website on cjdns network \u00b6 Install Yunohost by following the detailed instructions provided here . Once the installation is complete, log in as an administrator at yunohost.local . Perform a system update, which may take some time. Navigate to Tools -> Yunohost Settings -> Security, and under NGINX, disable \"Force HTTPS.\" Click Save to apply the changes. Reboot your Yunohost server to make the tun device available. Navigate to Tools->Shutdown and click Reboot. Return to yunohost.local after the update and navigate to the Applications menu. Click on Install, search for \"wordpress,\" select it, and proceed with the installation. Go back to the Applications menu, select \"All apps\" next to the search bar and then search for \"cjdns\", select it and install it. Once cjdns has installed your cjdns ipv6 will be displayed, Copy it. Ssh into your yunohost and edit your nginx configuration nano /etc/nginx/conf.d/[domain.com].conf there under the server section add your cjdns ipv6 as a server_name , make sure to put it with in square brackets [] and also remove any leading zeros from each section if there are any. For example: fc3d:2895:0b0c:cf4a:3d3b:216f:7268:a34a becomes [fc3d:2895:b0c:cf4a:3d3b:216f:7268:a34a] Save the conf file and run nginx -t to check for any errors and then `systemctl restart nginx` to restart the server. Congratulations now you have your new website available for everyone in the cjdns network. You can access it by using a browser and go to http://[your-cjdns-ipv6]/blog For example: `http://[fc3d:2895:b0c:cf4a:3d3b:216f:7268:a34a]/blog`","title":"Setup your website on cjdns network"},{"location":"cjdns_websites/#setup-your-website-on-cjdns-network","text":"Install Yunohost by following the detailed instructions provided here . Once the installation is complete, log in as an administrator at yunohost.local . Perform a system update, which may take some time. Navigate to Tools -> Yunohost Settings -> Security, and under NGINX, disable \"Force HTTPS.\" Click Save to apply the changes. Reboot your Yunohost server to make the tun device available. Navigate to Tools->Shutdown and click Reboot. Return to yunohost.local after the update and navigate to the Applications menu. Click on Install, search for \"wordpress,\" select it, and proceed with the installation. Go back to the Applications menu, select \"All apps\" next to the search bar and then search for \"cjdns\", select it and install it. Once cjdns has installed your cjdns ipv6 will be displayed, Copy it. Ssh into your yunohost and edit your nginx configuration nano /etc/nginx/conf.d/[domain.com].conf there under the server section add your cjdns ipv6 as a server_name , make sure to put it with in square brackets [] and also remove any leading zeros from each section if there are any. For example: fc3d:2895:0b0c:cf4a:3d3b:216f:7268:a34a becomes [fc3d:2895:b0c:cf4a:3d3b:216f:7268:a34a] Save the conf file and run nginx -t to check for any errors and then `systemctl restart nginx` to restart the server. Congratulations now you have your new website available for everyone in the cjdns network. You can access it by using a browser and go to http://[your-cjdns-ipv6]/blog For example: `http://[fc3d:2895:b0c:cf4a:3d3b:216f:7268:a34a]/blog`","title":"Setup your website on cjdns network"},{"location":"commercial/","text":"PKT Commercial \u00b6 This is a mostly un-moderated list of classified advertisements and offers. Buyer beware, anyone can contribute their own offer and pkt.cash does not verify them. Add yourself \u00b6 Make a Pull Request to This page to add your offer. Keep it short and to the point NO PICTURES, no color text, no big fonts Use the appropriate category Hardware \u00b6 Pktpal.com \u00b6 Buy a PKT Cube which will mine PKT with your unused internet and provides easy-to-use PkteerOS wallet. Hosting \u00b6 Space-hosting.net \u00b6 Mining servers for rent PKT Cloud Mining Service \u00b6 AMAPOOL.com \u00b6 Your best choice towards a fully automated PKT cloud mining solution.","title":"PKT Commercial"},{"location":"commercial/#pkt-commercial","text":"This is a mostly un-moderated list of classified advertisements and offers. Buyer beware, anyone can contribute their own offer and pkt.cash does not verify them.","title":"PKT Commercial"},{"location":"commercial/#add-yourself","text":"Make a Pull Request to This page to add your offer. Keep it short and to the point NO PICTURES, no color text, no big fonts Use the appropriate category","title":"Add yourself"},{"location":"commercial/#hardware","text":"","title":"Hardware"},{"location":"commercial/#pktpalcom","text":"Buy a PKT Cube which will mine PKT with your unused internet and provides easy-to-use PkteerOS wallet.","title":"Pktpal.com"},{"location":"commercial/#hosting","text":"","title":"Hosting"},{"location":"commercial/#space-hostingnet","text":"Mining servers for rent","title":"Space-hosting.net"},{"location":"commercial/#pkt-cloud-mining-service","text":"","title":"PKT Cloud Mining Service"},{"location":"commercial/#amapoolcom","text":"Your best choice towards a fully automated PKT cloud mining solution.","title":"AMAPOOL.com"},{"location":"communication/","text":"Ethical Communication Guidelines \u00b6 This is a guideline for ethical communications about the project. It is recognized that to accomplish the goals, it is imperative that there is a community who understands and uses the technology, so communication cannot be avoided. However, poor communication, even made with the best intentions, risks harming the reputation of the project and the general public. So these guidelines exist to help community members represent the project in the best way possible. A Far Higher Standard \u00b6 Within the cryptocurrency ecosystem, there are a significant number of outright criminal activities. Beyond those there is a wide grey area of communication activities which have not been subject to any regulatory enforcement, but still fall far outside of what these guidelines establish as ethical. Community members are cautioned that due to the scale of these \"grey\" activities, there is a large body of publications, influencers, marketers, \"shills\" and other professionals who, if consulted or emulated, are highly likely to put a person in ethical peril, because these guidelines establish a far higher standard of communication ethics than that which is generally considered to be legal. Principle of No Expected Return \u00b6 It is acknowledged that buying, selling and mining are central aspects of cryptocurrency use, so it is difficult to effectively communicate about the project without ever addressing reasons why a person might do these things. Therefore these guidelines offer a pre-approved narrative which is considered to be maximally protective of the reputation of the project while also providing a healthy perspective regarding the risks associated with cryptocurrency. The Principle of No Expected Return is that one should buy or mine a cryptocurrency if and only if they believe strongly enough in the vision of the project that they would be proud to own the coin even if they were never able to sell it. In the early days of Bitcoin, it was widely believed that it would be legislated out of existence or otherwise collapse, and so this principle was pervasive throughout the community. Many people chose to hold Bitcoin as a political statement regarding the morality of modern financial institutions, especially after the 2008 financial crisis. The key components of the Principle of No Expected Return are: * A clear understanding of what the technology is and what it is not. * A belief in the social change which that technology can realistically facilitate. * The mental and financial preparedness to lose any money or effort that is used to acquire the coin, as one has when one makes a donation. When you\u2019re considering buying a coin, you need to ask yourself: If you were to lose everything you put into a coin, would you look back on the day you bought it, proud to have been a part of the project at that time? If the answer is no, then you\u2019re either planning to buy too much, or you\u2019re just not ready. Guidelines \u00b6 Dishonest, intentionally misleading, or otherwise unlawful communication is obviously unethical, but beyond that there is no clear definition for unethical communication, though one could characterise it in the words of Justice Stewart, \"I know it when I see it\". These non-exhaustive guidelines exist to give community members an understanding of the types of communication which are most likely to be unethical. They are listed in order of importance with the most important first. Communications which follow the letter, but not the spirit, of these guidelines are unethical. One example of this is token disclaimers such as \"this is not financial advice\". Disclaimers can be useful for helping a person understand the limitations and caveats of a communication, but a token disclaimer exists more to make the communicator seem innocent than to help the audience have a clearer understanding. The use of fine print, or disclaimers which \"feel out of place\" in the overall communication should be regarded as red flags, and communicators using these should review the objectives of their message and whether it is being communicated clearly. Communications which a person of sound judgement could plausibly interpret as presenting a low risk low effort opportunity to make money , or \u201csomething for nothing\u201d, are unethical. Presenting an opportunity can take many forms including implication though specific selection of facts, or an over-celebratory tone. Generally speaking, communications should be explicit about their objective so that there is minimal chance of mis-interpretation. Communications which a person suffering impaired judgement has an unusually high likelihood of interpreting as a low risk low effort opportunity to make money are unethical. Topics like \u201cwinning\u201d, \u201cpump\u201d, \u201cFOMO\u201d, \u201cYOLO\u201d (spend all of your money), \u201cmoon\u201d, and the idea of being rich, may strike the average person as nothing more than a bit of low-culture humour, but for a pathological gambler these can trigger a harmful thought process and should be avoided. Communications related to investment and trading of the coin should be addressed to investors and traders \u2014 professionals who know how hard it is to reliably beat the market and who make decisions based on their own unique portfolio and risk management strategy. Any kind of communication around these topics which has a celebratory tone, or which could reasonably be interpreted as investment advice is not ethical. Communications which focus entirely on explaining a piece of technology, without any mention or implication of buying, selling, price, or potential future growth (including growth in usage of the technology), are probably ethical. Communications which address the topic of buying, selling or mining, but are specifically focused on the Principle of No Expected Return, are probably ethical. Examples to Avoid \u00b6 These passages are examples of the type of communication which is likely to be problematic. Context is key, and in the context of a communication which clearly transmits an ethical core message, a passing mention of money probably does not make the whole communication unethical. But if the core message is not communicated with adequate clarity, then even the slightest mention of topics like the following may make the communication unethical. \"price has grown by 50% over the past 3 months\" \"George has made $700 mining with his old computer\" \"reaping the rewards for something you put zero effort in!\"\" \"build a fund for rainy days\" \"earning passive income at any time of day, even when sleeping\" \"early adopters have the most to gain\" \"miners who accumulate the coin are rewarded whenever there is significant price appreciation\" \"so many people trust cryptocurrency investment\" \"gain financially by facilitating connectivity\" While some of these statements may be factual, they share a common narrative that there is an opportunity, it is easy, and it leads to making money. This is a stark contrast from the Principle of No Expected Return. Better Examples \u00b6 Honest communications addressing topics like the following are more likely to be ethical. \"price has been on the rise, but this can be affected by current events outside the project, so core community members are more focused on continuous progress toward the goal\" \"'I pay for my internet, so I might as well use it\"', said George who has been mining with his old computer\" \"we all know internet is over-priced, but now there is a community of people trying to do something about it\" \"'I know cryptocurrencies are risky, and tomorrow it could all be worth nothing, but I'm spending money I can afford on a something I believe in' said Tom, who recently bought coins\" \"the control that big telecoms have over our everyday lives can make people feel powerless, but now there\u2019s an easy way to push back\" \"sometimes the price goes up and sometimes it goes down. Being part of the community is about believing that democratised internet is possible\"","title":"Ethical Communication Guidelines"},{"location":"communication/#ethical-communication-guidelines","text":"This is a guideline for ethical communications about the project. It is recognized that to accomplish the goals, it is imperative that there is a community who understands and uses the technology, so communication cannot be avoided. However, poor communication, even made with the best intentions, risks harming the reputation of the project and the general public. So these guidelines exist to help community members represent the project in the best way possible.","title":"Ethical Communication Guidelines"},{"location":"communication/#a-far-higher-standard","text":"Within the cryptocurrency ecosystem, there are a significant number of outright criminal activities. Beyond those there is a wide grey area of communication activities which have not been subject to any regulatory enforcement, but still fall far outside of what these guidelines establish as ethical. Community members are cautioned that due to the scale of these \"grey\" activities, there is a large body of publications, influencers, marketers, \"shills\" and other professionals who, if consulted or emulated, are highly likely to put a person in ethical peril, because these guidelines establish a far higher standard of communication ethics than that which is generally considered to be legal.","title":"A Far Higher Standard"},{"location":"communication/#principle-of-no-expected-return","text":"It is acknowledged that buying, selling and mining are central aspects of cryptocurrency use, so it is difficult to effectively communicate about the project without ever addressing reasons why a person might do these things. Therefore these guidelines offer a pre-approved narrative which is considered to be maximally protective of the reputation of the project while also providing a healthy perspective regarding the risks associated with cryptocurrency. The Principle of No Expected Return is that one should buy or mine a cryptocurrency if and only if they believe strongly enough in the vision of the project that they would be proud to own the coin even if they were never able to sell it. In the early days of Bitcoin, it was widely believed that it would be legislated out of existence or otherwise collapse, and so this principle was pervasive throughout the community. Many people chose to hold Bitcoin as a political statement regarding the morality of modern financial institutions, especially after the 2008 financial crisis. The key components of the Principle of No Expected Return are: * A clear understanding of what the technology is and what it is not. * A belief in the social change which that technology can realistically facilitate. * The mental and financial preparedness to lose any money or effort that is used to acquire the coin, as one has when one makes a donation. When you\u2019re considering buying a coin, you need to ask yourself: If you were to lose everything you put into a coin, would you look back on the day you bought it, proud to have been a part of the project at that time? If the answer is no, then you\u2019re either planning to buy too much, or you\u2019re just not ready.","title":"Principle of No Expected Return"},{"location":"communication/#guidelines","text":"Dishonest, intentionally misleading, or otherwise unlawful communication is obviously unethical, but beyond that there is no clear definition for unethical communication, though one could characterise it in the words of Justice Stewart, \"I know it when I see it\". These non-exhaustive guidelines exist to give community members an understanding of the types of communication which are most likely to be unethical. They are listed in order of importance with the most important first. Communications which follow the letter, but not the spirit, of these guidelines are unethical. One example of this is token disclaimers such as \"this is not financial advice\". Disclaimers can be useful for helping a person understand the limitations and caveats of a communication, but a token disclaimer exists more to make the communicator seem innocent than to help the audience have a clearer understanding. The use of fine print, or disclaimers which \"feel out of place\" in the overall communication should be regarded as red flags, and communicators using these should review the objectives of their message and whether it is being communicated clearly. Communications which a person of sound judgement could plausibly interpret as presenting a low risk low effort opportunity to make money , or \u201csomething for nothing\u201d, are unethical. Presenting an opportunity can take many forms including implication though specific selection of facts, or an over-celebratory tone. Generally speaking, communications should be explicit about their objective so that there is minimal chance of mis-interpretation. Communications which a person suffering impaired judgement has an unusually high likelihood of interpreting as a low risk low effort opportunity to make money are unethical. Topics like \u201cwinning\u201d, \u201cpump\u201d, \u201cFOMO\u201d, \u201cYOLO\u201d (spend all of your money), \u201cmoon\u201d, and the idea of being rich, may strike the average person as nothing more than a bit of low-culture humour, but for a pathological gambler these can trigger a harmful thought process and should be avoided. Communications related to investment and trading of the coin should be addressed to investors and traders \u2014 professionals who know how hard it is to reliably beat the market and who make decisions based on their own unique portfolio and risk management strategy. Any kind of communication around these topics which has a celebratory tone, or which could reasonably be interpreted as investment advice is not ethical. Communications which focus entirely on explaining a piece of technology, without any mention or implication of buying, selling, price, or potential future growth (including growth in usage of the technology), are probably ethical. Communications which address the topic of buying, selling or mining, but are specifically focused on the Principle of No Expected Return, are probably ethical.","title":"Guidelines"},{"location":"communication/#examples-to-avoid","text":"These passages are examples of the type of communication which is likely to be problematic. Context is key, and in the context of a communication which clearly transmits an ethical core message, a passing mention of money probably does not make the whole communication unethical. But if the core message is not communicated with adequate clarity, then even the slightest mention of topics like the following may make the communication unethical. \"price has grown by 50% over the past 3 months\" \"George has made $700 mining with his old computer\" \"reaping the rewards for something you put zero effort in!\"\" \"build a fund for rainy days\" \"earning passive income at any time of day, even when sleeping\" \"early adopters have the most to gain\" \"miners who accumulate the coin are rewarded whenever there is significant price appreciation\" \"so many people trust cryptocurrency investment\" \"gain financially by facilitating connectivity\" While some of these statements may be factual, they share a common narrative that there is an opportunity, it is easy, and it leads to making money. This is a stark contrast from the Principle of No Expected Return.","title":"Examples to Avoid"},{"location":"communication/#better-examples","text":"Honest communications addressing topics like the following are more likely to be ethical. \"price has been on the rise, but this can be affected by current events outside the project, so core community members are more focused on continuous progress toward the goal\" \"'I pay for my internet, so I might as well use it\"', said George who has been mining with his old computer\" \"we all know internet is over-priced, but now there is a community of people trying to do something about it\" \"'I know cryptocurrencies are risky, and tomorrow it could all be worth nothing, but I'm spending money I can afford on a something I believe in' said Tom, who recently bought coins\" \"the control that big telecoms have over our everyday lives can make people feel powerless, but now there\u2019s an easy way to push back\" \"sometimes the price goes up and sometimes it goes down. Being part of the community is about believing that democratised internet is possible\"","title":"Better Examples"},{"location":"units/","text":"PKT Units and Fees \u00b6 As with all blockchains, every transaction of PKT is exact, however unlike other blockchains, the number of atomic units in the PKT coin is not a power of 10. With Bitcoin there are 100,000,000 atomic units (\"satoshis\") per bitcoin. With PKT there are 2 to the 30th power ( 1,073,741,824 ) atomic units. While this is strange number in base-10, in binary it is a perfectly even 1 followed by thirty zeros. The binary nature of PKT has a few caveats, for example it means sending 0.01 PKT is actually impossible. This is because 0.01 would corrispond to 10,737,418.24 atomic units. Since they are atomic (indivisible), this must be rounded to the nearest whole number: 10,737,418 . When this divided by 2 30 , it results in 0.009999999776482582 . Therefore, all GUI wallets and explorers adopt the following convension: PKT amounts are always expressed with two decimal places and rounded to nearest, so 1,084,479,242 atomic units is displayed as 1.01 PKT . If the amount is less than 1 PKT , the amount is displayed as milli-pkt or mPKT and multiplied by 1,000 , so 10,737,418 atomic units is displayed as 10.00 mPKT If the amount is less than 1 mPKT , the amount is displayed as micro-pkt or \u03bcPKT and multiplied by 1,000,000 , so 107,374 atomic units is displayed as 100.00 \u03bcPKT . If the amount is less than 1 \u03bcPKT , the amount is displayed as nano-pkt or nPKT and multiplied by 1,000,000,000 , so 107 atomic units is displayed as 99.64 nPKT . A single atomic unit is displayed as 0.93 nPKT . While these are the convensions adopted by all GUI wallets and explorers. Exchanges and merchants may choose to forbid transaction of amounts less than 1 PKT , thus they need only implement #1 because they will never display an amount of less than 1 PKT . Fees \u00b6 PKT uses bitcoin-like computation for determining fees. Because the blockchain has a 1 minute block time, there is generally plenty of space for transactions in the blocks and the typical fee is the minimum: 1 atomic unit per byte of transaction size. The size of a transaction depends on the number of transaction inputs and outputs. The number of outputs is simply the number of addresses you are paying, plus one more to re-route change back to yourself. The number of inputs depends on where the coins you are sending have been sourced from. If you are mining PKT, then you may have many tiny transactions which you need to aggregate in order to make a payment. Currently, wallets do not create transactions with more than 1,460 inputs. This results in a transaction of just under 100,000 bytes and thus costing right around 100,000 atomic units or 93.13 \u03bcPKT , that is micro-pkt or millionths of a PKT (for the largest possible transaction). A more typical transaction size would be around 1,000 bytes and thus cost 1,000 atomic units, or 931.32 nPKT (billionths of 1 PKT). In almost every case, the fees will disappear when the transaction is rounded to display the 2 decimal places. It is possible, though vanishingly unlikely that your wallet could display 10.00 PKT and after sending exactly 5 PKT your wallet displays 4.99 . This would happen if the actual amount you had was 9.555555556 PKT , rounded to 10.00 and after sending exactly 5 PKT , the miniscule fee caused it to cross a rounding boundary and become 4.555555553 . If you wish to perform analytical accounting, it is recommended that you deal exclusively in atomic units, represented as an int64, and only represent PKT for display purposes.","title":"PKT Units and Fees"},{"location":"units/#pkt-units-and-fees","text":"As with all blockchains, every transaction of PKT is exact, however unlike other blockchains, the number of atomic units in the PKT coin is not a power of 10. With Bitcoin there are 100,000,000 atomic units (\"satoshis\") per bitcoin. With PKT there are 2 to the 30th power ( 1,073,741,824 ) atomic units. While this is strange number in base-10, in binary it is a perfectly even 1 followed by thirty zeros. The binary nature of PKT has a few caveats, for example it means sending 0.01 PKT is actually impossible. This is because 0.01 would corrispond to 10,737,418.24 atomic units. Since they are atomic (indivisible), this must be rounded to the nearest whole number: 10,737,418 . When this divided by 2 30 , it results in 0.009999999776482582 . Therefore, all GUI wallets and explorers adopt the following convension: PKT amounts are always expressed with two decimal places and rounded to nearest, so 1,084,479,242 atomic units is displayed as 1.01 PKT . If the amount is less than 1 PKT , the amount is displayed as milli-pkt or mPKT and multiplied by 1,000 , so 10,737,418 atomic units is displayed as 10.00 mPKT If the amount is less than 1 mPKT , the amount is displayed as micro-pkt or \u03bcPKT and multiplied by 1,000,000 , so 107,374 atomic units is displayed as 100.00 \u03bcPKT . If the amount is less than 1 \u03bcPKT , the amount is displayed as nano-pkt or nPKT and multiplied by 1,000,000,000 , so 107 atomic units is displayed as 99.64 nPKT . A single atomic unit is displayed as 0.93 nPKT . While these are the convensions adopted by all GUI wallets and explorers. Exchanges and merchants may choose to forbid transaction of amounts less than 1 PKT , thus they need only implement #1 because they will never display an amount of less than 1 PKT .","title":"PKT Units and Fees"},{"location":"units/#fees","text":"PKT uses bitcoin-like computation for determining fees. Because the blockchain has a 1 minute block time, there is generally plenty of space for transactions in the blocks and the typical fee is the minimum: 1 atomic unit per byte of transaction size. The size of a transaction depends on the number of transaction inputs and outputs. The number of outputs is simply the number of addresses you are paying, plus one more to re-route change back to yourself. The number of inputs depends on where the coins you are sending have been sourced from. If you are mining PKT, then you may have many tiny transactions which you need to aggregate in order to make a payment. Currently, wallets do not create transactions with more than 1,460 inputs. This results in a transaction of just under 100,000 bytes and thus costing right around 100,000 atomic units or 93.13 \u03bcPKT , that is micro-pkt or millionths of a PKT (for the largest possible transaction). A more typical transaction size would be around 1,000 bytes and thus cost 1,000 atomic units, or 931.32 nPKT (billionths of 1 PKT). In almost every case, the fees will disappear when the transaction is rounded to display the 2 decimal places. It is possible, though vanishingly unlikely that your wallet could display 10.00 PKT and after sending exactly 5 PKT your wallet displays 4.99 . This would happen if the actual amount you had was 9.555555556 PKT , rounded to 10.00 and after sending exactly 5 PKT , the miniscule fee caused it to cross a rounding boundary and become 4.555555553 . If you wish to perform analytical accounting, it is recommended that you deal exclusively in atomic units, represented as an int64, and only represent PKT for display purposes.","title":"Fees"},{"location":"useful_tools/","text":"PKT Useful Tools \u00b6 This is a mostly un-moderated list of FREE tools, websites and software built by the PKT Cash community. Beware, anyone can contribute their own links and pkt.cash does not verify them. Add yourself \u00b6 Make a Pull Request to This page to add your link. Keep it short and to the point NO PICTURES, no color text, no big fonts No commercial products or services (these can be added here ) Chain Analysis \u00b6 Pkt.world Explorer \u00b6 The Pkt.world blockchain explorer gives insights into the blockchain, active mining pools and their performance, and your mining profits. PktPool.io \u00b6 Analytics dashboard covering many aspects of the PKT blockchain including a block explorer, transaction graphs, mining rewards, WPKT transactions and much more. Packetscan.io \u00b6 Packetscan is a block explorer for the PKT Cash blockchain. Look up transactions, blocks, addresess, balances, chain stats and more. Mining Yield and Performance Calculators \u00b6 MinePKT.com \u00b6 Ke/s calculator to see your profits! Mining Profitability Calculator \u00b6 Estimate performance and potential PKT Cash announcement miner earnings for a huge selection of CPUs. Mining Tools \u00b6 Minr \u00b6 A simple to use GUI for PacketCrypt. Available on MacOS, Windows and Linux. Configuration Generator \u00b6 Quickly generate and download a PacketCrypt config.json file. Miscellaneous \u00b6 Decimation Tracker \u00b6 When will the next PKT Cash decimation be? Never miss another decimation with the PKT Watch Decimation Tracker. PKT Tips \u00b6 Mining tips and tricks for memebers who are new to the PKT project.","title":"PKT Useful Tools"},{"location":"useful_tools/#pkt-useful-tools","text":"This is a mostly un-moderated list of FREE tools, websites and software built by the PKT Cash community. Beware, anyone can contribute their own links and pkt.cash does not verify them.","title":"PKT Useful Tools"},{"location":"useful_tools/#add-yourself","text":"Make a Pull Request to This page to add your link. Keep it short and to the point NO PICTURES, no color text, no big fonts No commercial products or services (these can be added here )","title":"Add yourself"},{"location":"useful_tools/#chain-analysis","text":"","title":"Chain Analysis"},{"location":"useful_tools/#pktworld-explorer","text":"The Pkt.world blockchain explorer gives insights into the blockchain, active mining pools and their performance, and your mining profits.","title":"Pkt.world Explorer"},{"location":"useful_tools/#pktpoolio","text":"Analytics dashboard covering many aspects of the PKT blockchain including a block explorer, transaction graphs, mining rewards, WPKT transactions and much more.","title":"PktPool.io"},{"location":"useful_tools/#packetscanio","text":"Packetscan is a block explorer for the PKT Cash blockchain. Look up transactions, blocks, addresess, balances, chain stats and more.","title":"Packetscan.io"},{"location":"useful_tools/#mining-yield-and-performance-calculators","text":"","title":"Mining Yield and Performance Calculators"},{"location":"useful_tools/#minepktcom","text":"Ke/s calculator to see your profits!","title":"MinePKT.com"},{"location":"useful_tools/#mining-profitability-calculator","text":"Estimate performance and potential PKT Cash announcement miner earnings for a huge selection of CPUs.","title":"Mining Profitability Calculator"},{"location":"useful_tools/#mining-tools","text":"","title":"Mining Tools"},{"location":"useful_tools/#minr","text":"A simple to use GUI for PacketCrypt. Available on MacOS, Windows and Linux.","title":"Minr"},{"location":"useful_tools/#configuration-generator","text":"Quickly generate and download a PacketCrypt config.json file.","title":"Configuration Generator"},{"location":"useful_tools/#miscellaneous","text":"","title":"Miscellaneous"},{"location":"useful_tools/#decimation-tracker","text":"When will the next PKT Cash decimation be? Never miss another decimation with the PKT Watch Decimation Tracker.","title":"Decimation Tracker"},{"location":"useful_tools/#pkt-tips","text":"Mining tips and tricks for memebers who are new to the PKT project.","title":"PKT Tips"},{"location":"vote/","text":"Casting a Vote \u00b6 To cast a vote, you need to install PKT-Lightning-Wallet on your computer. git clone https://github.com/cjdelisle/PKT-Lightning-Wallet cd PKT-Lightning-Wallet ./do Then you can create a new wallet to test the voting system: ./bin/pld --create --wallet=voting_test_jan24_2024 Once you have created it, start pld using: ./bin/pld --wallet=voting_test After it is running, open another window, navigate to the same folder, and make a new address: ./bin/pldctl wallet/address/create Once you have the new address, send yourself a few PKT in order to vote with it. You can check your balance using: ./bin/pldctl wallet/address/balances Before you can vote, you will first need to unlock the wallet: ./bin/pldctl unlock And after you have unlocked the wallet using the password you configured earlier, you can finally cast your vote: ./bin/pldctl wallet/transaction/sendvote \\ --from_address= \\ \u2014-vote_for=pkt1q2yt8djdlykf2d9ukmw0q5z5tur05xm674tq6y8 If all goes well, you should see a transaction ID as the result, and within a few minutes you will be able to look up that transaction on any of the block explorers. A few words of caution: If you use the CLI pktwallet, PKT-Lightning-Wallet will open your same wallet.db file and it responds the same way to the --wallet flag. PKT-Lightning-Wallet is still in development do not use it to open a large wallet yet!","title":"Casting a Vote"},{"location":"vote/#casting-a-vote","text":"To cast a vote, you need to install PKT-Lightning-Wallet on your computer. git clone https://github.com/cjdelisle/PKT-Lightning-Wallet cd PKT-Lightning-Wallet ./do Then you can create a new wallet to test the voting system: ./bin/pld --create --wallet=voting_test_jan24_2024 Once you have created it, start pld using: ./bin/pld --wallet=voting_test After it is running, open another window, navigate to the same folder, and make a new address: ./bin/pldctl wallet/address/create Once you have the new address, send yourself a few PKT in order to vote with it. You can check your balance using: ./bin/pldctl wallet/address/balances Before you can vote, you will first need to unlock the wallet: ./bin/pldctl unlock And after you have unlocked the wallet using the password you configured earlier, you can finally cast your vote: ./bin/pldctl wallet/transaction/sendvote \\ --from_address= \\ \u2014-vote_for=pkt1q2yt8djdlykf2d9ukmw0q5z5tur05xm674tq6y8 If all goes well, you should see a transaction ID as the result, and within a few minutes you will be able to look up that transaction on any of the block explorers. A few words of caution: If you use the CLI pktwallet, PKT-Lightning-Wallet will open your same wallet.db file and it responds the same way to the --wallet flag. PKT-Lightning-Wallet is still in development do not use it to open a large wallet yet!","title":"Casting a Vote"},{"location":"wrapped_pkt/","text":"Steps to swap PKT to wPKT \u00b6 Buy PKT on Bittrex Global (Non-USA traders) or BitMart (Global traders) Create a metamask wallet and connect to the Binance Smart Chain Goto www.ODApp.io Connect your metamask wallet Please note there is a %0.075 fee associated with swapping Pre-commit your wallet by entering the PKT sender address. This is the address that you will be sending your PKT from. (Please note: This address must be from a PKT wallet (Electrum, Zulu or PKT World. Once you commit this address it is the only address you can use to convert PKT to wPKT and wPKT to PKT. After you submit you should see Pair Successfully Committed. Click Get WPKT Using the PKT wallet address you used in step 5, Send the amount of PKT you want to wrap to wPKT to ODApp's \"VAULT\" address, pkt1qex9d4fjwc0nqr3x0hex6ds5vpu67efjdlm6ckz Make sure to copy the Transaction ID as you will need this in the coming steps For security, you will need to wait about 7 minutes to claim your WPKT. For transactions greater than 7 million PKT could take up to 3 hours to complete. Enter your PKT transaction ID, the address you sent your PKT from, and the BSC address you would like your WPKT sent to. You will need to hold some BNB coin in your metamask wallet to pay for fees in this process. If successful the following notification will populate and you will then have the ability to add wPKT token to your wallet. This will prompt your metamask wallet to open and allow you to add your tokens. Go check your wPKT wallet and make sure your coins were deposited. You can always copy your PKT transaction hash into etherscan.io and you should see the transaction on the blockchain. Steps to swap wPKT to PKT \u00b6 You should already have either purchased wPKT on PancakeSwap or swapped your PKT into wPKT Please note there is a %.075 fee associated with swapping Log into your metmask wallet You must have some BNB in your wallet as you will need this for fees associated with swapping. Open your PKT wallet Goto www.ODApp.io and connect your metamask wallet Enter the amount of wPKT you want to convert to PKT Enter the PKT wallet address you would like the PKT deposited into The following prompt should show if you successfully burned the coins Press Recover PKT and this prompt should show Go check your PKT wallet and make sure your coins were deposited. You can always copy your PKT transaction hash into https://explorer.pkt.cash and you should see the transaction on the blockchain.","title":"Wrapped pkt"},{"location":"wrapped_pkt/#steps-to-swap-pkt-to-wpkt","text":"Buy PKT on Bittrex Global (Non-USA traders) or BitMart (Global traders) Create a metamask wallet and connect to the Binance Smart Chain Goto www.ODApp.io Connect your metamask wallet Please note there is a %0.075 fee associated with swapping Pre-commit your wallet by entering the PKT sender address. This is the address that you will be sending your PKT from. (Please note: This address must be from a PKT wallet (Electrum, Zulu or PKT World. Once you commit this address it is the only address you can use to convert PKT to wPKT and wPKT to PKT. After you submit you should see Pair Successfully Committed. Click Get WPKT Using the PKT wallet address you used in step 5, Send the amount of PKT you want to wrap to wPKT to ODApp's \"VAULT\" address, pkt1qex9d4fjwc0nqr3x0hex6ds5vpu67efjdlm6ckz Make sure to copy the Transaction ID as you will need this in the coming steps For security, you will need to wait about 7 minutes to claim your WPKT. For transactions greater than 7 million PKT could take up to 3 hours to complete. Enter your PKT transaction ID, the address you sent your PKT from, and the BSC address you would like your WPKT sent to. You will need to hold some BNB coin in your metamask wallet to pay for fees in this process. If successful the following notification will populate and you will then have the ability to add wPKT token to your wallet. This will prompt your metamask wallet to open and allow you to add your tokens. Go check your wPKT wallet and make sure your coins were deposited. You can always copy your PKT transaction hash into etherscan.io and you should see the transaction on the blockchain.","title":"Steps to swap PKT to wPKT"},{"location":"wrapped_pkt/#steps-to-swap-wpkt-to-pkt","text":"You should already have either purchased wPKT on PancakeSwap or swapped your PKT into wPKT Please note there is a %.075 fee associated with swapping Log into your metmask wallet You must have some BNB in your wallet as you will need this for fees associated with swapping. Open your PKT wallet Goto www.ODApp.io and connect your metamask wallet Enter the amount of wPKT you want to convert to PKT Enter the PKT wallet address you would like the PKT deposited into The following prompt should show if you successfully burned the coins Press Recover PKT and this prompt should show Go check your PKT wallet and make sure your coins were deposited. You can always copy your PKT transaction hash into https://explorer.pkt.cash and you should see the transaction on the blockchain.","title":"Steps to swap wPKT to PKT"},{"location":"adv_learning/buy-pkt/","text":"PKT Documentation \u00b6 Documentation for the PKT project Wallet setup \u00b6 There are several wallets which you can choose from, the easiest to set up are PKT Electrum which has a Graphical UI and supports Windows, Mac and Linux. PKT Wallet which has a Graphical UI and supports MacOS and works great with miners. Pkt.world Wallet which has a Graphical UI for Windows, works with miners and includes a built-in miner. You can also setup PKT Wallet which is command line only but has greater scalability and privacy features. Mining \u00b6 PKT is mined using the PacketCrypt bandwidth hard mining algorithm. You can learn how to mine on the Mining page. Running a pktd instance \u00b6 You can setup a pktd instance using the instructions on pktd . Help and Community \u00b6 To get help with the technologies in the PKT project or to hang out in the community join us on the PKT Chat project chat.","title":"PKT Documentation"},{"location":"adv_learning/buy-pkt/#pkt-documentation","text":"Documentation for the PKT project","title":"PKT Documentation"},{"location":"adv_learning/buy-pkt/#wallet-setup","text":"There are several wallets which you can choose from, the easiest to set up are PKT Electrum which has a Graphical UI and supports Windows, Mac and Linux. PKT Wallet which has a Graphical UI and supports MacOS and works great with miners. Pkt.world Wallet which has a Graphical UI for Windows, works with miners and includes a built-in miner. You can also setup PKT Wallet which is command line only but has greater scalability and privacy features.","title":"Wallet setup"},{"location":"adv_learning/buy-pkt/#mining","text":"PKT is mined using the PacketCrypt bandwidth hard mining algorithm. You can learn how to mine on the Mining page.","title":"Mining"},{"location":"adv_learning/buy-pkt/#running-a-pktd-instance","text":"You can setup a pktd instance using the instructions on pktd .","title":"Running a pktd instance"},{"location":"adv_learning/buy-pkt/#help-and-community","text":"To get help with the technologies in the PKT project or to hang out in the community join us on the PKT Chat project chat.","title":"Help and Community"},{"location":"adv_learning/cryptoeconomics/","text":"Cryptoeconomics \u00b6 PKT blockchain is based on the Bitcoin codebase and implements two fundamental changes: Replacing SHA256 with the PacketCrypt proof of work. Adding a Network Steward that receives 20% of every coinbase payout to provide grants that meets its funding criteria. There are a total of 6 billion PKT, which will be mined over 63 years. Instead of an abrupt halving event every 4 years, like with Bitcoin, PKT uses a steady decay called a decimation, which is a 10% reduction in the block rewards every 100 days. Payout of PKT vs. BTC as percent of total coins Payout of PKT vs. BTC as percent of total coins PKT is designed around fast cheap transacting in small denominations. This is why there will be a total of 6 billion PKT mined compared to 21 million for Bitcoin. Furthermore, each PKT is subdividable into 1,073,741,824 units (2 to the 30th power) whereas there are only 100 million satoshis per Bitcoin. When the Bitcoin price reached almost $62,000 in October 2021, the price of a satoshi was 0.06 cents. This cost per satoshi is impractical for microtransactions, even with nearly free transacting over the Lightning Network. PKT Cash provides an economic incentive for people to connect bandwidth to the PKT Network. The Network Steward is designed to ensure funding is available to build-out an expansive, decentralized internet infrastructure with open-source technology.","title":"Cryptoeconomics"},{"location":"adv_learning/cryptoeconomics/#cryptoeconomics","text":"PKT blockchain is based on the Bitcoin codebase and implements two fundamental changes: Replacing SHA256 with the PacketCrypt proof of work. Adding a Network Steward that receives 20% of every coinbase payout to provide grants that meets its funding criteria. There are a total of 6 billion PKT, which will be mined over 63 years. Instead of an abrupt halving event every 4 years, like with Bitcoin, PKT uses a steady decay called a decimation, which is a 10% reduction in the block rewards every 100 days. Payout of PKT vs. BTC as percent of total coins Payout of PKT vs. BTC as percent of total coins PKT is designed around fast cheap transacting in small denominations. This is why there will be a total of 6 billion PKT mined compared to 21 million for Bitcoin. Furthermore, each PKT is subdividable into 1,073,741,824 units (2 to the 30th power) whereas there are only 100 million satoshis per Bitcoin. When the Bitcoin price reached almost $62,000 in October 2021, the price of a satoshi was 0.06 cents. This cost per satoshi is impractical for microtransactions, even with nearly free transacting over the Lightning Network. PKT Cash provides an economic incentive for people to connect bandwidth to the PKT Network. The Network Steward is designed to ensure funding is available to build-out an expansive, decentralized internet infrastructure with open-source technology.","title":"Cryptoeconomics"},{"location":"adv_learning/pktd-full-node/","text":"How to Run a Pktd Full Node \u00b6 Pktd is the PKT full node blockchain software. It is a fork of btcd, the golang bitcoin instance. Running a full node \u00b6 If you want to run a full node in the PKT network, you can do so by downloading pktd and compiling it on a Linux or Mac server. Follow the process in Installation and the simply type ./bin/pktd and it will start up and begin syncing the chain and helping verify the PKT network. NOTE : Running a full node requires over 40 GB of disk space to store the blockchain and is not necessary for participating in the project. If you just want to make a wallet, see PKT Electrum (gui) or PKTWallet (command line) wallets. Installation \u00b6 Install golang \u00b6 First, you need to install the go programming language, go to the golang website and learn how to install it on your system: https://golang.org/doc/install Install git \u00b6 Next you will need to make sure you have git installed. The first thing to do is check whether you have it installed already: git version If it prints something like git version 2.21.1 you\u2019re in luck and you can continue. If it prints something more like command not found: git then you\u2019ll need to install it. Installation will depend on your system, for debian/ubuntu like systems you will want sudo apt install git and for OSX with homebrew, you\u2019ll want brew install git . Install the components \u00b6 Once you have golang and git fully installed and set up, you can use the following commands to install pktd, pktwallet and pktctl. git clone https://github.com/pkt-cash/pktd cd pktd ./do If you see something like: Everything looks good at the end of typing ./do then you should be ready to start using pktd.","title":"How to Run a Pktd Full Node"},{"location":"adv_learning/pktd-full-node/#how-to-run-a-pktd-full-node","text":"Pktd is the PKT full node blockchain software. It is a fork of btcd, the golang bitcoin instance.","title":"How to Run a Pktd Full Node"},{"location":"adv_learning/pktd-full-node/#running-a-full-node","text":"If you want to run a full node in the PKT network, you can do so by downloading pktd and compiling it on a Linux or Mac server. Follow the process in Installation and the simply type ./bin/pktd and it will start up and begin syncing the chain and helping verify the PKT network. NOTE : Running a full node requires over 40 GB of disk space to store the blockchain and is not necessary for participating in the project. If you just want to make a wallet, see PKT Electrum (gui) or PKTWallet (command line) wallets.","title":"Running a full node"},{"location":"adv_learning/pktd-full-node/#installation","text":"","title":"Installation"},{"location":"adv_learning/pktd-full-node/#install-golang","text":"First, you need to install the go programming language, go to the golang website and learn how to install it on your system: https://golang.org/doc/install","title":"Install golang"},{"location":"adv_learning/pktd-full-node/#install-git","text":"Next you will need to make sure you have git installed. The first thing to do is check whether you have it installed already: git version If it prints something like git version 2.21.1 you\u2019re in luck and you can continue. If it prints something more like command not found: git then you\u2019ll need to install it. Installation will depend on your system, for debian/ubuntu like systems you will want sudo apt install git and for OSX with homebrew, you\u2019ll want brew install git .","title":"Install git"},{"location":"adv_learning/pktd-full-node/#install-the-components","text":"Once you have golang and git fully installed and set up, you can use the following commands to install pktd, pktwallet and pktctl. git clone https://github.com/pkt-cash/pktd cd pktd ./do If you see something like: Everything looks good at the end of typing ./do then you should be ready to start using pktd.","title":"Install the components"},{"location":"adv_learning/sell-pkt/","text":"PKT Documentation \u00b6 Documentation for the PKT project Wallet setup \u00b6 There are several wallets which you can choose from, the easiest to set up are PKT Electrum which has a Graphical UI and supports Windows, Mac and Linux. PKT Wallet which has a Graphical UI and supports MacOS and works great with miners. Pkt.world Wallet which has a Graphical UI for Windows, works with miners and includes a built-in miner. You can also setup PKT Wallet which is command line only but has greater scalability and privacy features. Mining \u00b6 PKT is mined using the PacketCrypt bandwidth hard mining algorithm. You can learn how to mine on the Mining page. Running a pktd instance \u00b6 You can setup a pktd instance using the instructions on pktd . Help and Community \u00b6 To get help with the technologies in the PKT project or to hang out in the community join us on the PKT Chat project chat.","title":"PKT Documentation"},{"location":"adv_learning/sell-pkt/#pkt-documentation","text":"Documentation for the PKT project","title":"PKT Documentation"},{"location":"adv_learning/sell-pkt/#wallet-setup","text":"There are several wallets which you can choose from, the easiest to set up are PKT Electrum which has a Graphical UI and supports Windows, Mac and Linux. PKT Wallet which has a Graphical UI and supports MacOS and works great with miners. Pkt.world Wallet which has a Graphical UI for Windows, works with miners and includes a built-in miner. You can also setup PKT Wallet which is command line only but has greater scalability and privacy features.","title":"Wallet setup"},{"location":"adv_learning/sell-pkt/#mining","text":"PKT is mined using the PacketCrypt bandwidth hard mining algorithm. You can learn how to mine on the Mining page.","title":"Mining"},{"location":"adv_learning/sell-pkt/#running-a-pktd-instance","text":"You can setup a pktd instance using the instructions on pktd .","title":"Running a pktd instance"},{"location":"adv_learning/sell-pkt/#help-and-community","text":"To get help with the technologies in the PKT project or to hang out in the community join us on the PKT Chat project chat.","title":"Help and Community"},{"location":"adv_learning/swap-pkt-wrapped-pkt/","text":"How to Swap PKT and Wrapped PKT \u00b6 Steps to swap PKT to wPKT \u00b6 Buy PKT on Bittrex Global (Non-USA traders) or BitMart (Global traders) Create a metamask wallet and connect to the Binance Smart Chain Goto www.ODApp.io Connect your metamask wallet Please note there is a %0.075 fee associated with swapping Pre-commit your wallet by entering the PKT sender address. This is the address that you will be sending your PKT from. (Please note: This address must be from a PKT wallet (Electrum, Zulu or PKT World. Once you commit this address it is the only address you can use to convert PKT to wPKT and wPKT to PKT. After you submit you should see Pair Successfully Committed. Click Get WPKT Using the PKT wallet address you used in step 5, Send the amount of PKT you want to wrap to wPKT to ODApp's \"VAULT\" address, pkt1qex9d4fjwc0nqr3x0hex6ds5vpu67efjdlm6ckz Make sure to copy the Transaction ID as you will need this in the coming steps For security, you will need to wait about 7 minutes to claim your WPKT. For transactions greater than 7 million PKT could take up to 3 hours to complete. Enter your PKT transaction ID, the address you sent your PKT from, and the BSC address you would like your WPKT sent to. You will need to hold some BNB coin in your metamask wallet to pay for fees in this process. If successful the following notification will populate and you will then have the ability to add wPKT token to your wallet. This will prompt your metamask wallet to open and allow you to add your tokens. Go check your wPKT wallet and make sure your coins were deposited. You can always copy your PKT transaction hash into etherscan.io and you should see the transaction on the blockchain. Steps to swap wPKT to PKT \u00b6 You should already have either purchased wPKT on PancakeSwap or swapped your PKT into wPKT Please note there is a %.075 fee associated with swapping Log into your metmask wallet You must have some BNB in your wallet as you will need this for fees associated with swapping. Open your PKT wallet Go to www.ODApp.io and connect your metamask wallet Enter the amount of wPKT you want to convert to PKT Enter the PKT wallet address you would like the PKT deposited into The following prompt should show if you successfully burned the coins Press Recover PKT and this prompt should show Go check your PKT wallet and make sure your coins were deposited. You can always copy your PKT transaction hash into https://explorer.pkt.cash and you should see the transaction on the blockchain.","title":"How to Swap PKT and Wrapped PKT"},{"location":"adv_learning/swap-pkt-wrapped-pkt/#how-to-swap-pkt-and-wrapped-pkt","text":"","title":"How to Swap PKT and Wrapped PKT"},{"location":"adv_learning/swap-pkt-wrapped-pkt/#steps-to-swap-pkt-to-wpkt","text":"Buy PKT on Bittrex Global (Non-USA traders) or BitMart (Global traders) Create a metamask wallet and connect to the Binance Smart Chain Goto www.ODApp.io Connect your metamask wallet Please note there is a %0.075 fee associated with swapping Pre-commit your wallet by entering the PKT sender address. This is the address that you will be sending your PKT from. (Please note: This address must be from a PKT wallet (Electrum, Zulu or PKT World. Once you commit this address it is the only address you can use to convert PKT to wPKT and wPKT to PKT. After you submit you should see Pair Successfully Committed. Click Get WPKT Using the PKT wallet address you used in step 5, Send the amount of PKT you want to wrap to wPKT to ODApp's \"VAULT\" address, pkt1qex9d4fjwc0nqr3x0hex6ds5vpu67efjdlm6ckz Make sure to copy the Transaction ID as you will need this in the coming steps For security, you will need to wait about 7 minutes to claim your WPKT. For transactions greater than 7 million PKT could take up to 3 hours to complete. Enter your PKT transaction ID, the address you sent your PKT from, and the BSC address you would like your WPKT sent to. You will need to hold some BNB coin in your metamask wallet to pay for fees in this process. If successful the following notification will populate and you will then have the ability to add wPKT token to your wallet. This will prompt your metamask wallet to open and allow you to add your tokens. Go check your wPKT wallet and make sure your coins were deposited. You can always copy your PKT transaction hash into etherscan.io and you should see the transaction on the blockchain.","title":"Steps to swap PKT to wPKT"},{"location":"adv_learning/swap-pkt-wrapped-pkt/#steps-to-swap-wpkt-to-pkt","text":"You should already have either purchased wPKT on PancakeSwap or swapped your PKT into wPKT Please note there is a %.075 fee associated with swapping Log into your metmask wallet You must have some BNB in your wallet as you will need this for fees associated with swapping. Open your PKT wallet Go to www.ODApp.io and connect your metamask wallet Enter the amount of wPKT you want to convert to PKT Enter the PKT wallet address you would like the PKT deposited into The following prompt should show if you successfully burned the coins Press Recover PKT and this prompt should show Go check your PKT wallet and make sure your coins were deposited. You can always copy your PKT transaction hash into https://explorer.pkt.cash and you should see the transaction on the blockchain.","title":"Steps to swap wPKT to PKT"},{"location":"community/classifieds/","text":"Classifieds \u00b6 PKT is composed of the community members and community member companies that operate within the ecosystem. This collective comes from around the world and are rallying around the vision and roadmap towards getting the next one billion people connected online. Below is a mostly un-moderated list of classified advertisements and offerings. Beware that anyone can contribute and offer their services and there is no central authority at pkt.cash to verify them. Add yourself \u00b6 Make a Pull Request to This page to add your offer. Keep it short and to the point NO PICTURES, no color text, no big fonts Use the appropriate category Hardware \u00b6 Pktpal.com \u00b6 Buy a PKT Cube which will mine PKT with your unused internet and provides easy-to-use PkteerOS wallet. Hosting \u00b6 Space-hosting.net \u00b6 Mining servers for rent PKT Cloud Mining Service \u00b6 AMAPOOL.com \u00b6 Your best choice towards a fully automated PKT cloud mining solution.","title":"Classifieds"},{"location":"community/classifieds/#classifieds","text":"PKT is composed of the community members and community member companies that operate within the ecosystem. This collective comes from around the world and are rallying around the vision and roadmap towards getting the next one billion people connected online. Below is a mostly un-moderated list of classified advertisements and offerings. Beware that anyone can contribute and offer their services and there is no central authority at pkt.cash to verify them.","title":"Classifieds"},{"location":"community/classifieds/#add-yourself","text":"Make a Pull Request to This page to add your offer. Keep it short and to the point NO PICTURES, no color text, no big fonts Use the appropriate category","title":"Add yourself"},{"location":"community/classifieds/#hardware","text":"","title":"Hardware"},{"location":"community/classifieds/#pktpalcom","text":"Buy a PKT Cube which will mine PKT with your unused internet and provides easy-to-use PkteerOS wallet.","title":"Pktpal.com"},{"location":"community/classifieds/#hosting","text":"","title":"Hosting"},{"location":"community/classifieds/#space-hostingnet","text":"Mining servers for rent","title":"Space-hosting.net"},{"location":"community/classifieds/#pkt-cloud-mining-service","text":"","title":"PKT Cloud Mining Service"},{"location":"community/classifieds/#amapoolcom","text":"Your best choice towards a fully automated PKT cloud mining solution.","title":"AMAPOOL.com"},{"location":"community/code_of_conduct/","text":"PKT Code of Conduct: \u00b6 1) We are here to talk about PKT. If it's not PKT related don't post it here. 2) Not reading the rules is not an excuse for breaking the rules. 3) No OTC trading allowed outside of designated areas. 4) This is a place to build the community and create a positive dialogue amongst Pkteers. If the conversation turns negative, the moderators reserves the right to ban or block anyone. A person will not be banned for a single offense, but only if the behavior continues after being warned by a moderator. 5) Hate speech is not permitted and can result in being banned. This mean no sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory jokes and language. We ask that Pkteers keep the conversation civil and respectful. 6) No violence, threats of violence or violent language directed against another person. No name calling, attacks, or bad mouthing others. 7) No posting or displaying sexually explicit or violent material. 8) No personal insults, particularly those related to gender, sexual orientation, race, religion, or disability 9) No unwelcome sexual attention. This includes, sexualized comments or jokes, and unwelcomed sexual advances. 10) No self-promotion whether direct or indirect unless with written admin approval. No shilling (promoting) of assets is permitted. 12) Moderators reserve the right to moderate, block or remove posts that are factually inaccurate, deemed inappopriate or lack substantiation. 13) Spamming will result in being banned. 14) No trolling - No antagonizing people or the any of the PKT chats by deliberately posting inflammatory, irrelevant, or offensive comments, images, memes, stickers or other disruptive content. If it doesn't relate to PKT don't post it or you will be banned. Contact people \u00b6 If someone has made you feel unsafe or unwelcome, please contact one of the admins of the group. We will do our best to address your matter quickly and with discretion. Jeremy Berger: email: jeremy@pktpal.com / telegram: @jeremy_berger / pkt.chat: @jeremyb Caleb James DeLisle: email: cjd@cjdns.fr / pkt.chat: @cjd","title":"Code of Conduct"},{"location":"community/code_of_conduct/#pkt-code-of-conduct","text":"1) We are here to talk about PKT. If it's not PKT related don't post it here. 2) Not reading the rules is not an excuse for breaking the rules. 3) No OTC trading allowed outside of designated areas. 4) This is a place to build the community and create a positive dialogue amongst Pkteers. If the conversation turns negative, the moderators reserves the right to ban or block anyone. A person will not be banned for a single offense, but only if the behavior continues after being warned by a moderator. 5) Hate speech is not permitted and can result in being banned. This mean no sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory jokes and language. We ask that Pkteers keep the conversation civil and respectful. 6) No violence, threats of violence or violent language directed against another person. No name calling, attacks, or bad mouthing others. 7) No posting or displaying sexually explicit or violent material. 8) No personal insults, particularly those related to gender, sexual orientation, race, religion, or disability 9) No unwelcome sexual attention. This includes, sexualized comments or jokes, and unwelcomed sexual advances. 10) No self-promotion whether direct or indirect unless with written admin approval. No shilling (promoting) of assets is permitted. 12) Moderators reserve the right to moderate, block or remove posts that are factually inaccurate, deemed inappopriate or lack substantiation. 13) Spamming will result in being banned. 14) No trolling - No antagonizing people or the any of the PKT chats by deliberately posting inflammatory, irrelevant, or offensive comments, images, memes, stickers or other disruptive content. If it doesn't relate to PKT don't post it or you will be banned.","title":"PKT Code of Conduct:"},{"location":"community/code_of_conduct/#contact-people","text":"If someone has made you feel unsafe or unwelcome, please contact one of the admins of the group. We will do our best to address your matter quickly and with discretion. Jeremy Berger: email: jeremy@pktpal.com / telegram: @jeremy_berger / pkt.chat: @jeremyb Caleb James DeLisle: email: cjd@cjdns.fr / pkt.chat: @cjd","title":"Contact people"},{"location":"community/ethica-communication-guidelines/","text":"Ethical Communication Guidelines \u00b6 This is a guideline for ethical communications about the project. It is recognized that to accomplish the goals, it is imperative that there is a community who understands and uses the technology, so communication cannot be avoided. However, poor communication, even made with the best intentions, risks harming the reputation of the project and the general public. So these guidelines exist to help community members represent the project in the best way possible. A Far Higher Standard \u00b6 Within the cryptocurrency ecosystem, there are a significant number of outright criminal activities. Beyond those there is a wide grey area of communication activities which have not been subject to any regulatory enforcement, but still fall far outside of what these guidelines establish as ethical. Community members are cautioned that due to the scale of these \"grey\" activities, there is a large body of publications, influencers, marketers, \"shills\" and other professionals who, if consulted or emulated, are highly likely to put a person in ethical peril, because these guidelines establish a far higher standard of communication ethics than that which is generally considered to be legal. Principle of No Expected Return \u00b6 It is acknowledged that buying, selling and mining are central aspects of cryptocurrency use, so it is difficult to effectively communicate about the project without ever addressing reasons why a person might do these things. Therefore these guidelines offer a pre-approved narrative which is considered to be maximally protective of the reputation of the project while also providing a healthy perspective regarding the risks associated with cryptocurrency. The Principle of No Expected Return is that one should buy or mine a cryptocurrency if and only if they believe strongly enough in the vision of the project that they would be proud to own the coin even if they were never able to sell it. In the early days of Bitcoin, it was widely believed that it would be legislated out of existence or otherwise collapse, and so this principle was pervasive throughout the community. Many people chose to hold Bitcoin as a political statement regarding the morality of modern financial institutions, especially after the 2008 financial crisis. The key components of the Principle of No Expected Return are: * A clear understanding of what the technology is and what it is not. * A belief in the social change which that technology can realistically facilitate. * The mental and financial preparedness to lose any money or effort that is used to acquire the coin, as one has when one makes a donation. When you\u2019re considering buying a coin, you need to ask yourself: If you were to lose everything you put into a coin, would you look back on the day you bought it, proud to have been a part of the project at that time? If the answer is no, then you\u2019re either planning to buy too much, or you\u2019re just not ready. Guidelines \u00b6 Dishonest, intentionally misleading, or otherwise unlawful communication is obviously unethical, but beyond that there is no clear definition for unethical communication, though one could characterise it in the words of Justice Stewart, \"I know it when I see it\". These non-exhaustive guidelines exist to give community members an understanding of the types of communication which are most likely to be unethical. They are listed in order of importance with the most important first. Communications which follow the letter, but not the spirit, of these guidelines are unethical. One example of this is token disclaimers such as \"this is not financial advice\". Disclaimers can be useful for helping a person understand the limitations and caveats of a communication, but a token disclaimer exists more to make the communicator seem innocent than to help the audience have a clearer understanding. The use of fine print, or disclaimers which \"feel out of place\" in the overall communication should be regarded as red flags, and communicators using these should review the objectives of their message and whether it is being communicated clearly. Communications which a person of sound judgement could plausibly interpret as presenting a low risk low effort opportunity to make money , or \u201csomething for nothing\u201d, are unethical. Presenting an opportunity can take many forms including implication though specific selection of facts, or an over-celebratory tone. Generally speaking, communications should be explicit about their objective so that there is minimal chance of mis-interpretation. Communications which a person suffering impaired judgement has an unusually high likelihood of interpreting as a low risk low effort opportunity to make money are unethical. Topics like \u201cwinning\u201d, \u201cpump\u201d, \u201cFOMO\u201d, \u201cYOLO\u201d (spend all of your money), \u201cmoon\u201d, and the idea of being rich, may strike the average person as nothing more than a bit of low-culture humour, but for a pathological gambler these can trigger a harmful thought process and should be avoided. Communications related to investment and trading of the coin should be addressed to investors and traders \u2014 professionals who know how hard it is to reliably beat the market and who make decisions based on their own unique portfolio and risk management strategy. Any kind of communication around these topics which has a celebratory tone, or which could reasonably be interpreted as investment advice is not ethical. Communications which focus entirely on explaining a piece of technology, without any mention or implication of buying, selling, price, or potential future growth (including growth in usage of the technology), are probably ethical. Communications which address the topic of buying, selling or mining, but are specifically focused on the Principle of No Expected Return, are probably ethical. Examples to Avoid \u00b6 These passages are examples of the type of communication which is likely to be problematic. Context is key, and in the context of a communication which clearly transmits an ethical core message, a passing mention of money probably does not make the whole communication unethical. But if the core message is not communicated with adequate clarity, then even the slightest mention of topics like the following may make the communication unethical. \"price has grown by 50% over the past 3 months\" \"George has made $700 mining with his old computer\" \"reaping the rewards for something you put zero effort in!\"\" \"build a fund for rainy days\" \"earning passive income at any time of day, even when sleeping\" \"early adopters have the most to gain\" \"miners who accumulate the coin are rewarded whenever there is significant price appreciation\" \"so many people trust cryptocurrency investment\" \"gain financially by facilitating connectivity\" While some of these statements may be factual, they share a common narrative that there is an opportunity, it is easy, and it leads to making money. This is a stark contrast from the Principle of No Expected Return. Better Examples \u00b6 Honest communications addressing topics like the following are more likely to be ethical. \"price has been on the rise, but this can be affected by current events outside the project, so core community members are more focused on continuous progress toward the goal\" \"'I pay for my internet, so I might as well use it\"', said George who has been mining with his old computer\" \"we all know internet is over-priced, but now there is a community of people trying to do something about it\" \"'I know cryptocurrencies are risky, and tomorrow it could all be worth nothing, but I'm spending money I can afford on a something I believe in' said Tom, who recently bought coins\" \"the control that big telecoms have over our everyday lives can make people feel powerless, but now there\u2019s an easy way to push back\" \"sometimes the price goes up and sometimes it goes down. Being part of the community is about believing that democratised internet is possible\"","title":"Ethical Communication Guidelines"},{"location":"community/ethica-communication-guidelines/#ethical-communication-guidelines","text":"This is a guideline for ethical communications about the project. It is recognized that to accomplish the goals, it is imperative that there is a community who understands and uses the technology, so communication cannot be avoided. However, poor communication, even made with the best intentions, risks harming the reputation of the project and the general public. So these guidelines exist to help community members represent the project in the best way possible.","title":"Ethical Communication Guidelines"},{"location":"community/ethica-communication-guidelines/#a-far-higher-standard","text":"Within the cryptocurrency ecosystem, there are a significant number of outright criminal activities. Beyond those there is a wide grey area of communication activities which have not been subject to any regulatory enforcement, but still fall far outside of what these guidelines establish as ethical. Community members are cautioned that due to the scale of these \"grey\" activities, there is a large body of publications, influencers, marketers, \"shills\" and other professionals who, if consulted or emulated, are highly likely to put a person in ethical peril, because these guidelines establish a far higher standard of communication ethics than that which is generally considered to be legal.","title":"A Far Higher Standard"},{"location":"community/ethica-communication-guidelines/#principle-of-no-expected-return","text":"It is acknowledged that buying, selling and mining are central aspects of cryptocurrency use, so it is difficult to effectively communicate about the project without ever addressing reasons why a person might do these things. Therefore these guidelines offer a pre-approved narrative which is considered to be maximally protective of the reputation of the project while also providing a healthy perspective regarding the risks associated with cryptocurrency. The Principle of No Expected Return is that one should buy or mine a cryptocurrency if and only if they believe strongly enough in the vision of the project that they would be proud to own the coin even if they were never able to sell it. In the early days of Bitcoin, it was widely believed that it would be legislated out of existence or otherwise collapse, and so this principle was pervasive throughout the community. Many people chose to hold Bitcoin as a political statement regarding the morality of modern financial institutions, especially after the 2008 financial crisis. The key components of the Principle of No Expected Return are: * A clear understanding of what the technology is and what it is not. * A belief in the social change which that technology can realistically facilitate. * The mental and financial preparedness to lose any money or effort that is used to acquire the coin, as one has when one makes a donation. When you\u2019re considering buying a coin, you need to ask yourself: If you were to lose everything you put into a coin, would you look back on the day you bought it, proud to have been a part of the project at that time? If the answer is no, then you\u2019re either planning to buy too much, or you\u2019re just not ready.","title":"Principle of No Expected Return"},{"location":"community/ethica-communication-guidelines/#guidelines","text":"Dishonest, intentionally misleading, or otherwise unlawful communication is obviously unethical, but beyond that there is no clear definition for unethical communication, though one could characterise it in the words of Justice Stewart, \"I know it when I see it\". These non-exhaustive guidelines exist to give community members an understanding of the types of communication which are most likely to be unethical. They are listed in order of importance with the most important first. Communications which follow the letter, but not the spirit, of these guidelines are unethical. One example of this is token disclaimers such as \"this is not financial advice\". Disclaimers can be useful for helping a person understand the limitations and caveats of a communication, but a token disclaimer exists more to make the communicator seem innocent than to help the audience have a clearer understanding. The use of fine print, or disclaimers which \"feel out of place\" in the overall communication should be regarded as red flags, and communicators using these should review the objectives of their message and whether it is being communicated clearly. Communications which a person of sound judgement could plausibly interpret as presenting a low risk low effort opportunity to make money , or \u201csomething for nothing\u201d, are unethical. Presenting an opportunity can take many forms including implication though specific selection of facts, or an over-celebratory tone. Generally speaking, communications should be explicit about their objective so that there is minimal chance of mis-interpretation. Communications which a person suffering impaired judgement has an unusually high likelihood of interpreting as a low risk low effort opportunity to make money are unethical. Topics like \u201cwinning\u201d, \u201cpump\u201d, \u201cFOMO\u201d, \u201cYOLO\u201d (spend all of your money), \u201cmoon\u201d, and the idea of being rich, may strike the average person as nothing more than a bit of low-culture humour, but for a pathological gambler these can trigger a harmful thought process and should be avoided. Communications related to investment and trading of the coin should be addressed to investors and traders \u2014 professionals who know how hard it is to reliably beat the market and who make decisions based on their own unique portfolio and risk management strategy. Any kind of communication around these topics which has a celebratory tone, or which could reasonably be interpreted as investment advice is not ethical. Communications which focus entirely on explaining a piece of technology, without any mention or implication of buying, selling, price, or potential future growth (including growth in usage of the technology), are probably ethical. Communications which address the topic of buying, selling or mining, but are specifically focused on the Principle of No Expected Return, are probably ethical.","title":"Guidelines"},{"location":"community/ethica-communication-guidelines/#examples-to-avoid","text":"These passages are examples of the type of communication which is likely to be problematic. Context is key, and in the context of a communication which clearly transmits an ethical core message, a passing mention of money probably does not make the whole communication unethical. But if the core message is not communicated with adequate clarity, then even the slightest mention of topics like the following may make the communication unethical. \"price has grown by 50% over the past 3 months\" \"George has made $700 mining with his old computer\" \"reaping the rewards for something you put zero effort in!\"\" \"build a fund for rainy days\" \"earning passive income at any time of day, even when sleeping\" \"early adopters have the most to gain\" \"miners who accumulate the coin are rewarded whenever there is significant price appreciation\" \"so many people trust cryptocurrency investment\" \"gain financially by facilitating connectivity\" While some of these statements may be factual, they share a common narrative that there is an opportunity, it is easy, and it leads to making money. This is a stark contrast from the Principle of No Expected Return.","title":"Examples to Avoid"},{"location":"community/ethica-communication-guidelines/#better-examples","text":"Honest communications addressing topics like the following are more likely to be ethical. \"price has been on the rise, but this can be affected by current events outside the project, so core community members are more focused on continuous progress toward the goal\" \"'I pay for my internet, so I might as well use it\"', said George who has been mining with his old computer\" \"we all know internet is over-priced, but now there is a community of people trying to do something about it\" \"'I know cryptocurrencies are risky, and tomorrow it could all be worth nothing, but I'm spending money I can afford on a something I believe in' said Tom, who recently bought coins\" \"the control that big telecoms have over our everyday lives can make people feel powerless, but now there\u2019s an easy way to push back\" \"sometimes the price goes up and sometimes it goes down. Being part of the community is about believing that democratised internet is possible\"","title":"Better Examples"},{"location":"community/press-media-assets/","text":"Press & Media Assets \u00b6 Brand Assets \u00b6 Download the PKT Logo and wordmark assets here . Before use, please see the trademark guidelines for these assets here .","title":"Press & Media Assets"},{"location":"community/press-media-assets/#press-media-assets","text":"","title":"Press & Media Assets"},{"location":"community/press-media-assets/#brand-assets","text":"Download the PKT Logo and wordmark assets here . Before use, please see the trademark guidelines for these assets here .","title":"Brand Assets"},{"location":"dev/building-on-pkt/","text":"Building on PKT \u00b6 The PKT roadmap is composed of 4 Phases, based on having the fewest dependencies first. Collectively the 3 Phase will bring the PKT Network to scale. Phase 1: Launch \u00b6 Bandwidth Mining PacketCrypt was created and the mainnet PKT blockchain was launched in August 2019. Phase 1 focused on community growth, building out network infrastructure and unifying around PacketCrypt and bandwidth-hard mining. Major developments include multiple PKT wallets, community engagement via PKT Chat, the project task tracker, Network Steward and informational websites. Phase 2: Utilize \u00b6 Tokenized Bandwidth Leases Anyone who wants to use a VPN, create their own, or mine PKT will easily be able to do so via Anodium VPN. Technology development includes Token Strike, to issue tokens in the PKT ecosystem for near zero cost and without gas fees, a DeFi bridge between PKT, Ethereum and Binance Smart Chain, bandwidth lease function and infrastructure via cjdns, and an Edge Point Device to easily mine PacketCrypt and get on the internet via your neighbor. Phase 3: Scale \u00b6 Support Internet Sharing The alpha implementation of the virtual Cloud ISP provides the ability to trade, aggregate, and access tokenized bandwidth leases via cjdns. People can get on the internet via their neighbor with no privacy risk because all data is sent to a VPN. The Atomic Swap Market can transact in and out of PKT with high speed, low cost transactions between Lightning Network enabled coins such as PKT, Bitcoin, Litecoin and Ethereum. Desktop and mobile apps provide easy functionality across devices worldwide. Phase 4: Innovate \u00b6 Virtual ISPs The commercial expansion of Cloud ISPs signifies a healthy and active bandwidth market. People can lease bandwidth allotment guarantees and access the internet without using a traditional ISP. PKT Priority provides internet access with a minimum price free if there is available bandwidth. This will simplify local mesh networking by moving the network engineering component to the Cloud ISP. The stateless switch design central in the cjdns protocol will not only set new records for router performance/cost ratio, but will also allow for hundreds or even thousands of Cloud ISPs to send data through a single device, each according to their own routing policy.","title":"Building on PKT"},{"location":"dev/building-on-pkt/#building-on-pkt","text":"The PKT roadmap is composed of 4 Phases, based on having the fewest dependencies first. Collectively the 3 Phase will bring the PKT Network to scale.","title":"Building on PKT"},{"location":"dev/building-on-pkt/#phase-1-launch","text":"Bandwidth Mining PacketCrypt was created and the mainnet PKT blockchain was launched in August 2019. Phase 1 focused on community growth, building out network infrastructure and unifying around PacketCrypt and bandwidth-hard mining. Major developments include multiple PKT wallets, community engagement via PKT Chat, the project task tracker, Network Steward and informational websites.","title":"Phase 1: Launch"},{"location":"dev/building-on-pkt/#phase-2-utilize","text":"Tokenized Bandwidth Leases Anyone who wants to use a VPN, create their own, or mine PKT will easily be able to do so via Anodium VPN. Technology development includes Token Strike, to issue tokens in the PKT ecosystem for near zero cost and without gas fees, a DeFi bridge between PKT, Ethereum and Binance Smart Chain, bandwidth lease function and infrastructure via cjdns, and an Edge Point Device to easily mine PacketCrypt and get on the internet via your neighbor.","title":"Phase 2: Utilize"},{"location":"dev/building-on-pkt/#phase-3-scale","text":"Support Internet Sharing The alpha implementation of the virtual Cloud ISP provides the ability to trade, aggregate, and access tokenized bandwidth leases via cjdns. People can get on the internet via their neighbor with no privacy risk because all data is sent to a VPN. The Atomic Swap Market can transact in and out of PKT with high speed, low cost transactions between Lightning Network enabled coins such as PKT, Bitcoin, Litecoin and Ethereum. Desktop and mobile apps provide easy functionality across devices worldwide.","title":"Phase 3: Scale"},{"location":"dev/building-on-pkt/#phase-4-innovate","text":"Virtual ISPs The commercial expansion of Cloud ISPs signifies a healthy and active bandwidth market. People can lease bandwidth allotment guarantees and access the internet without using a traditional ISP. PKT Priority provides internet access with a minimum price free if there is available bandwidth. This will simplify local mesh networking by moving the network engineering component to the Cloud ISP. The stateless switch design central in the cjdns protocol will not only set new records for router performance/cost ratio, but will also allow for hundreds or even thousands of Cloud ISPs to send data through a single device, each according to their own routing policy.","title":"Phase 4: Innovate"},{"location":"dev/cjdns/","text":"Cjdns \u00b6 PKT is an ideological continuation of the cjdns mesh networking project, launched by PKT Lead Developer Caleb James DeLisle in 2011. Cjdns solves several weaknesses with internet function, such as data privacy, need for decentralization and optimized, efficient routing. Cjdns provides anyone with an IPv6 address, which is the basis for a global mesh network in which anyone can share their internet and become an internet service provider.","title":"Cjdns"},{"location":"dev/cjdns/#cjdns","text":"PKT is an ideological continuation of the cjdns mesh networking project, launched by PKT Lead Developer Caleb James DeLisle in 2011. Cjdns solves several weaknesses with internet function, such as data privacy, need for decentralization and optimized, efficient routing. Cjdns provides anyone with an IPv6 address, which is the basis for a global mesh network in which anyone can share their internet and become an internet service provider.","title":"Cjdns"},{"location":"dev/cloud-isp/","text":"Cloud ISP \u00b6 A Cloud ISP is a hybrid between a traditional ISP and a VPN provider. This technology is designed to reimagine internet service, so anyone can become an ISP. Cloud ISPs aggregate and broker Edge Point tokenized bandwidth leases, facilitate software defined networking, and oversee the administrative roles of internet service to customers. The Cloud ISP system is designed to manage two virtual assets: the virtual router lease and the bandwidth lease. A virtual router lease has a right to resources within the routing device for a limited time period. The bandwidth lease provides a minimum bandwidth link guarantee between two physical routing devices for a specific time period. The result is the PKT Network: an ultra fast independent network that is connected to the normal internet and powered by the people.","title":"Cloud ISP"},{"location":"dev/cloud-isp/#cloud-isp","text":"A Cloud ISP is a hybrid between a traditional ISP and a VPN provider. This technology is designed to reimagine internet service, so anyone can become an ISP. Cloud ISPs aggregate and broker Edge Point tokenized bandwidth leases, facilitate software defined networking, and oversee the administrative roles of internet service to customers. The Cloud ISP system is designed to manage two virtual assets: the virtual router lease and the bandwidth lease. A virtual router lease has a right to resources within the routing device for a limited time period. The bandwidth lease provides a minimum bandwidth link guarantee between two physical routing devices for a specific time period. The result is the PKT Network: an ultra fast independent network that is connected to the normal internet and powered by the people.","title":"Cloud ISP"},{"location":"dev/edge-points/","text":"Edge Point \u00b6 Edge Points are devices that are operated by an individual or business and maintain a network connection to the PKT Network. Edge Points will tokenize their bandwidth using TokenStrike and sell tokenized bandwidth to Cloud ISPs to broker connectivity to real customers. Edge Point technology will interface with PKT VPN and evolve to facilitate mesh network access points to the internet.","title":"Edge Point"},{"location":"dev/edge-points/#edge-point","text":"Edge Points are devices that are operated by an individual or business and maintain a network connection to the PKT Network. Edge Points will tokenize their bandwidth using TokenStrike and sell tokenized bandwidth to Cloud ISPs to broker connectivity to real customers. Edge Point technology will interface with PKT VPN and evolve to facilitate mesh network access points to the internet.","title":"Edge Point"},{"location":"dev/packetcrypt/","text":"PacketCrypt \u00b6 PacketCrypt is the world\u2019s first bandwidth-hard proof of work. Packet = Bandwidth and Crypt = Encryption. This technology incentivizes miners to increase bandwidth upload & download throughput. PKT mining favors increased bandwidth over CPU power, rewarding people that connect high speed bandwidth infrastructure to the PKT Network.","title":"PacketCrypt"},{"location":"dev/packetcrypt/#packetcrypt","text":"PacketCrypt is the world\u2019s first bandwidth-hard proof of work. Packet = Bandwidth and Crypt = Encryption. This technology incentivizes miners to increase bandwidth upload & download throughput. PKT mining favors increased bandwidth over CPU power, rewarding people that connect high speed bandwidth infrastructure to the PKT Network.","title":"PacketCrypt"},{"location":"dev/pkt-lightning-deamon/","text":"PKT Lighting \u00b6","title":"PKT Lighting"},{"location":"dev/pkt-lightning-deamon/#pkt-lighting","text":"","title":"PKT Lighting"},{"location":"dev/pkt-vpn/","text":"PKT VPN \u00b6 The PKT VPN is built to connect to, send and receive traffic through the cjdns network. PKT VPN enables users to get a base-line VPN for free, and pay for speed using microtransactions with PKT Cash. VPN server administrators will register as a public PKT VPN, accept client connections and route VPN traffic through the PKT network. Users can browse a list of VPNs, select the best VPN based on location and bandwidth load and surf the internet from behind a PKT VPN exit node. VPN creates utility for the PKT Network and offers financial incentive in addition to PKT Cash mining.","title":"PKT VPN"},{"location":"dev/pkt-vpn/#pkt-vpn","text":"The PKT VPN is built to connect to, send and receive traffic through the cjdns network. PKT VPN enables users to get a base-line VPN for free, and pay for speed using microtransactions with PKT Cash. VPN server administrators will register as a public PKT VPN, accept client connections and route VPN traffic through the PKT network. Users can browse a list of VPNs, select the best VPN based on location and bandwidth load and surf the internet from behind a PKT VPN exit node. VPN creates utility for the PKT Network and offers financial incentive in addition to PKT Cash mining.","title":"PKT VPN"},{"location":"dev/tokenstrike/","text":"TokenStrike \u00b6 TokenStrike is a unique protocol for the issuance and exchange of tokens and NFTs inside of the PKT ecosystem. TokenStrike is designed for micro-transactions, so tokens must be issued and exchanged with zero cost and without gas fees (gas fees for the exchange of ERC-20 tokens is unacceptable). TokenStrike tokens can be exchanged in a fully untrusted Lightning Network HTLC transaction. This is a scalable solution that fosters unlimited marketplace potential, including a decentralized bandwidth market, and sets PKT apart from every other layer 1 blockchain in the world. Edge Points will tokenize their bandwidth using TokenStrike and sell tokenized bandwidth to Cloud ISPs to broker connectivity to real customers. This collectively will interface with PKT VPN and evolve to facilitate software defined networking and content delivery across the internet.","title":"TokenStrike"},{"location":"dev/tokenstrike/#tokenstrike","text":"TokenStrike is a unique protocol for the issuance and exchange of tokens and NFTs inside of the PKT ecosystem. TokenStrike is designed for micro-transactions, so tokens must be issued and exchanged with zero cost and without gas fees (gas fees for the exchange of ERC-20 tokens is unacceptable). TokenStrike tokens can be exchanged in a fully untrusted Lightning Network HTLC transaction. This is a scalable solution that fosters unlimited marketplace potential, including a decentralized bandwidth market, and sets PKT apart from every other layer 1 blockchain in the world. Edge Points will tokenize their bandwidth using TokenStrike and sell tokenized bandwidth to Cloud ISPs to broker connectivity to real customers. This collectively will interface with PKT VPN and evolve to facilitate software defined networking and content delivery across the internet.","title":"TokenStrike"},{"location":"dev/wiif-sharing/","text":"PKT Documentation \u00b6 Documentation for the PKT project Wallet setup \u00b6 There are several wallets which you can choose from, the easiest to set up are PKT Electrum which has a Graphical UI and supports Windows, Mac and Linux. PKT Wallet which has a Graphical UI and supports MacOS and works great with miners. Pkt.world Wallet which has a Graphical UI for Windows, works with miners and includes a built-in miner. You can also setup PKT Wallet which is command line only but has greater scalability and privacy features. Mining \u00b6 PKT is mined using the PacketCrypt bandwidth hard mining algorithm. You can learn how to mine on the Mining page. Running a pktd instance \u00b6 You can setup a pktd instance using the instructions on pktd . Help and Community \u00b6 To get help with the technologies in the PKT project or to hang out in the community join us on the PKT Chat project chat.","title":"PKT Documentation"},{"location":"dev/wiif-sharing/#pkt-documentation","text":"Documentation for the PKT project","title":"PKT Documentation"},{"location":"dev/wiif-sharing/#wallet-setup","text":"There are several wallets which you can choose from, the easiest to set up are PKT Electrum which has a Graphical UI and supports Windows, Mac and Linux. PKT Wallet which has a Graphical UI and supports MacOS and works great with miners. Pkt.world Wallet which has a Graphical UI for Windows, works with miners and includes a built-in miner. You can also setup PKT Wallet which is command line only but has greater scalability and privacy features.","title":"Wallet setup"},{"location":"dev/wiif-sharing/#mining","text":"PKT is mined using the PacketCrypt bandwidth hard mining algorithm. You can learn how to mine on the Mining page.","title":"Mining"},{"location":"dev/wiif-sharing/#running-a-pktd-instance","text":"You can setup a pktd instance using the instructions on pktd .","title":"Running a pktd instance"},{"location":"dev/wiif-sharing/#help-and-community","text":"To get help with the technologies in the PKT project or to hang out in the community join us on the PKT Chat project chat.","title":"Help and Community"},{"location":"electrum/","text":"PKT electrum \u00b6 Important Electrum is a good lightweight wallet for making and receiving payments, but it lacks scalability and is not appropriate for mining , if you are interested in mining PKT, see pktwallet . First setup \u00b6 MacOS \u00b6 Download the file ending with .dmg from the latest PKT Electrum Releases Open Finder Double-click on your Downloads folder and find and click on electrum-pkt-4.0.2.dmg A new window will open with the PKT Electrum app, click and drag it into your Applications folder Press Command+Space to open your Spotlight Search and type PKT Electrum, when you see the PKT Electrum app, press the Enter key to open it. The first time PKT Electrum is opened, you will get a popup asking you if you want to open it, click open Continue with Setting up your wallet below Windows \u00b6 Download the file ending with .exe from the latest PKT Electrum Releases You will see a popup window telling you the application is not signed by a Microsoft Authorized Developer, always be sure you download PKT Electrum from the original website, do not run any app given to you in a chat, file-sharing or email attachment. Click \"More info\" to show additional options. Click the \"Run anyway\" button to launch PKT Electrum, you won't see this message again. Follow the steps in the setup process. Go to your desktop and you should see a new icon labeled PKT Electrum , click on it. Continue with Setting up your wallet below. Linux \u00b6 Download the file ending with .AppImage from the latest PKT Electrum Releases Click on the downloaded file and PKT Electrum should start up right away. Setting up your wallet \u00b6 Before you can begin using PKT, you need to setup your wallet, this means writing down your secret key and setting passwords so your PKT will stay safe. First you will be asked if you want to configure the server to connect to, unless you are an advanced user, just click \"next\" Next select your wallet, you give your wallet a name if you wish, or leave it as default_wallet , then click \"next\". You will be prompted to select which type of wallet you are creating, unless you are doing something fancy, you'll want to just click \"next\" Next you will have the option to create a wallet using a secret key from different sources, for the purposes of this tutorial just click next. Next you will be asked if you want to create a \"legacy\" style wallet, this is not needed so just click \"next\" Now PKT Electrum is going to create a seed , it takes the form of 12 words and from it your entire wallet is created If you have these 12 special words, you can recover your PKT even if your computer is lost or damaged If someone else gets access to these 12 words, they can steal all of your PKT It is recommended that you write this on paper and keep in a safe place. After you have written your seed, you will be asked to type it back in, the fast way to do this is by copy/paste to a text pad Now you'll be asked to write it back in, you can copy it from the text pad Make sure you really stored your seed on paper, we do not recommend storing it on any electronic device . Now you will need to pick a passphrase for your wallet This passphrase encrypts your wallet, protecting your PKT even if your computer is stolen Unlike your seed, the passphrase is useless without the wallet file We recommend using https://www.useapassphrase.com/ to pick a strong passphrase for you You can store your passphrase on your phone to have easy access Congratulations, you now have a PKT wallet! It will require about 5 minutes to synchronize with the PKT blockchain, but you can still use it while this is happening. Receiving PKT \u00b6 To receive coins, you need to create a new PKT address Click the \"Receive\" tab Type a description for the purpose of receiving the coins, this will appear in the notification when you get paid Set the expiration, if this is not an invoice , you can choose \"never\" After you click \"Request\", your wallet will create a new address and copy it to your clipboard so you can send it to the person paying you (or transfer money to your new wallet) When PKT gets sent to your new address, you will get a notification. It says \"unconfirmed\" because the transaction has not yet been included in the history of the blockchain. Once your transaction has been included in the blockchain, this icon will change to a clock and then after a few minutes, a checkmark Congratulations, you have received your first PKT Sending PKT \u00b6 To pay PKT to someone else, click on the Send tab and paste the address to be paid Type a description of the payment, this is just for you, it will not be sent to the person you are paying Enter the amount to be paid Click Pay You will be prompted to enter your wallet passphrase in order to decrypt the wallet for one brief moment to send the PKT Every transaction requires a fee for inclusion in the blockchain, this is a very small cost: 132 nPKT is one hundred and thirty two nano-PKT (that means billionths , i.e. 0.000000132 PKT) After you enter your passphrase and click \"send\", you will see a transaction ID , this set of numbers and letters uniquely identifies your transaction and can be used to view it in the block explorer. Just like when receiving, your transaction will appear first as \"unconfirmed\" and then later it will switch to a clock when it has been included in the blockchain. After waiting a few minutes, you will see a clock and then later a checkmark indicating your transaction has been included in the blockchain When people consider a transaction to be \"complete\" depends on the merchant, but in general it should be considered to be ok once it switches from \"unconfirmed\" to the clock icon. Congratulations, you've sent PKT! About Units \u00b6 Each PKT is made up of 1000 milli-PKT, denoted mPKT Each milli-PKT is sub-divided into 1000 micro-PKT, denoted uPKT Each micro-PKT is sub-divided into 1000 nano-PKT, denoted nPKT Advanced usage \u00b6 Recover from seed \u00b6 You can recover a PKT Electrum wallet from the seed you were given when you set it up. To do this follow the same instructions as for any other Electrum wallet: https://bitcoinelectrum.com/restoring-your-standard-wallet-from-seed/ Note that recovery from seed will not work to import addresses from other wallets such as a Gridnode. Multi-signature \u00b6 Setting up multi-signature in PKT Electrum is the same as with Bitcoin Electrum so you can follow this tutorial: https://electrum.readthedocs.io/en/latest/multisig.html How it works \u00b6 PKT Electrum is significantly similar to Bitcoin Electrum. It contacts one of a pool of community operated electrumx servers. Instead of syncing the entire chain it requests information about its addresses from the electrumx server and only downloads enough of the blockchain to verify that the electrumx server is not trying to trick it. In practice this means the wallet needs to check the proof of work and sync the block headers but not the rest of the blocks. Since PKT uses PacketCrypt proof of work, the work verification needs to be different. PacketCrypt headers are fairly large, between 4KB and 16KB, even at only 4KB each they make up 2.1GB of data per year. To maintain security without downloading an unacceptably large amount of data, PKT Electrum downloads only a small number of PacketCrypt proofs near the tip of the chain. If the wallet only downloaded (say) the most recent 100 PacketCrypt proofs, an attacking electrumx server would know exactly how many blocks it needed to mine in order to create a convincing fake chain, PKT Electrum makes this more difficult by using statistical verification. Statistical Verification \u00b6 PKT Electrum makes the job of an attacker hard by asking for an unpredictable random set of PacketCrypt proofs, the chance of any give block being verified is based on the distance between the tip of the chain and that block. The chance is defined as MIN(100%, K / distance_from_tip) where K is a constant which we set at 20 to make PKT Electrum verify around 200 blocks total. With K = 20 , the first 20 blocks have a 100% chance of being verified. * block 21 has a 95% chance * block 25 has an 80% chance * block 50 has a 40% chance * block 80 has a 25% chance The distribution of likelyhood of verifying a block is shown by this chart: Running an ElectrumX server \u00b6 If you would like to participate in running your own ElectrumX server to help the PKT Electrum network, you can do so using a simple Docker command. Check out the Docker PKT Electrumx project for more information about how to run an instance.","title":"PKT electrum"},{"location":"electrum/#pkt-electrum","text":"Important Electrum is a good lightweight wallet for making and receiving payments, but it lacks scalability and is not appropriate for mining , if you are interested in mining PKT, see pktwallet .","title":"PKT electrum"},{"location":"electrum/#first-setup","text":"","title":"First setup"},{"location":"electrum/#macos","text":"Download the file ending with .dmg from the latest PKT Electrum Releases Open Finder Double-click on your Downloads folder and find and click on electrum-pkt-4.0.2.dmg A new window will open with the PKT Electrum app, click and drag it into your Applications folder Press Command+Space to open your Spotlight Search and type PKT Electrum, when you see the PKT Electrum app, press the Enter key to open it. The first time PKT Electrum is opened, you will get a popup asking you if you want to open it, click open Continue with Setting up your wallet below","title":"MacOS"},{"location":"electrum/#windows","text":"Download the file ending with .exe from the latest PKT Electrum Releases You will see a popup window telling you the application is not signed by a Microsoft Authorized Developer, always be sure you download PKT Electrum from the original website, do not run any app given to you in a chat, file-sharing or email attachment. Click \"More info\" to show additional options. Click the \"Run anyway\" button to launch PKT Electrum, you won't see this message again. Follow the steps in the setup process. Go to your desktop and you should see a new icon labeled PKT Electrum , click on it. Continue with Setting up your wallet below.","title":"Windows"},{"location":"electrum/#linux","text":"Download the file ending with .AppImage from the latest PKT Electrum Releases Click on the downloaded file and PKT Electrum should start up right away.","title":"Linux"},{"location":"electrum/#setting-up-your-wallet","text":"Before you can begin using PKT, you need to setup your wallet, this means writing down your secret key and setting passwords so your PKT will stay safe. First you will be asked if you want to configure the server to connect to, unless you are an advanced user, just click \"next\" Next select your wallet, you give your wallet a name if you wish, or leave it as default_wallet , then click \"next\". You will be prompted to select which type of wallet you are creating, unless you are doing something fancy, you'll want to just click \"next\" Next you will have the option to create a wallet using a secret key from different sources, for the purposes of this tutorial just click next. Next you will be asked if you want to create a \"legacy\" style wallet, this is not needed so just click \"next\" Now PKT Electrum is going to create a seed , it takes the form of 12 words and from it your entire wallet is created If you have these 12 special words, you can recover your PKT even if your computer is lost or damaged If someone else gets access to these 12 words, they can steal all of your PKT It is recommended that you write this on paper and keep in a safe place. After you have written your seed, you will be asked to type it back in, the fast way to do this is by copy/paste to a text pad Now you'll be asked to write it back in, you can copy it from the text pad Make sure you really stored your seed on paper, we do not recommend storing it on any electronic device . Now you will need to pick a passphrase for your wallet This passphrase encrypts your wallet, protecting your PKT even if your computer is stolen Unlike your seed, the passphrase is useless without the wallet file We recommend using https://www.useapassphrase.com/ to pick a strong passphrase for you You can store your passphrase on your phone to have easy access Congratulations, you now have a PKT wallet! It will require about 5 minutes to synchronize with the PKT blockchain, but you can still use it while this is happening.","title":"Setting up your wallet"},{"location":"electrum/#receiving-pkt","text":"To receive coins, you need to create a new PKT address Click the \"Receive\" tab Type a description for the purpose of receiving the coins, this will appear in the notification when you get paid Set the expiration, if this is not an invoice , you can choose \"never\" After you click \"Request\", your wallet will create a new address and copy it to your clipboard so you can send it to the person paying you (or transfer money to your new wallet) When PKT gets sent to your new address, you will get a notification. It says \"unconfirmed\" because the transaction has not yet been included in the history of the blockchain. Once your transaction has been included in the blockchain, this icon will change to a clock and then after a few minutes, a checkmark Congratulations, you have received your first PKT","title":"Receiving PKT"},{"location":"electrum/#sending-pkt","text":"To pay PKT to someone else, click on the Send tab and paste the address to be paid Type a description of the payment, this is just for you, it will not be sent to the person you are paying Enter the amount to be paid Click Pay You will be prompted to enter your wallet passphrase in order to decrypt the wallet for one brief moment to send the PKT Every transaction requires a fee for inclusion in the blockchain, this is a very small cost: 132 nPKT is one hundred and thirty two nano-PKT (that means billionths , i.e. 0.000000132 PKT) After you enter your passphrase and click \"send\", you will see a transaction ID , this set of numbers and letters uniquely identifies your transaction and can be used to view it in the block explorer. Just like when receiving, your transaction will appear first as \"unconfirmed\" and then later it will switch to a clock when it has been included in the blockchain. After waiting a few minutes, you will see a clock and then later a checkmark indicating your transaction has been included in the blockchain When people consider a transaction to be \"complete\" depends on the merchant, but in general it should be considered to be ok once it switches from \"unconfirmed\" to the clock icon. Congratulations, you've sent PKT!","title":"Sending PKT"},{"location":"electrum/#about-units","text":"Each PKT is made up of 1000 milli-PKT, denoted mPKT Each milli-PKT is sub-divided into 1000 micro-PKT, denoted uPKT Each micro-PKT is sub-divided into 1000 nano-PKT, denoted nPKT","title":"About Units"},{"location":"electrum/#advanced-usage","text":"","title":"Advanced usage"},{"location":"electrum/#recover-from-seed","text":"You can recover a PKT Electrum wallet from the seed you were given when you set it up. To do this follow the same instructions as for any other Electrum wallet: https://bitcoinelectrum.com/restoring-your-standard-wallet-from-seed/ Note that recovery from seed will not work to import addresses from other wallets such as a Gridnode.","title":"Recover from seed"},{"location":"electrum/#multi-signature","text":"Setting up multi-signature in PKT Electrum is the same as with Bitcoin Electrum so you can follow this tutorial: https://electrum.readthedocs.io/en/latest/multisig.html","title":"Multi-signature"},{"location":"electrum/#how-it-works","text":"PKT Electrum is significantly similar to Bitcoin Electrum. It contacts one of a pool of community operated electrumx servers. Instead of syncing the entire chain it requests information about its addresses from the electrumx server and only downloads enough of the blockchain to verify that the electrumx server is not trying to trick it. In practice this means the wallet needs to check the proof of work and sync the block headers but not the rest of the blocks. Since PKT uses PacketCrypt proof of work, the work verification needs to be different. PacketCrypt headers are fairly large, between 4KB and 16KB, even at only 4KB each they make up 2.1GB of data per year. To maintain security without downloading an unacceptably large amount of data, PKT Electrum downloads only a small number of PacketCrypt proofs near the tip of the chain. If the wallet only downloaded (say) the most recent 100 PacketCrypt proofs, an attacking electrumx server would know exactly how many blocks it needed to mine in order to create a convincing fake chain, PKT Electrum makes this more difficult by using statistical verification.","title":"How it works"},{"location":"electrum/#statistical-verification","text":"PKT Electrum makes the job of an attacker hard by asking for an unpredictable random set of PacketCrypt proofs, the chance of any give block being verified is based on the distance between the tip of the chain and that block. The chance is defined as MIN(100%, K / distance_from_tip) where K is a constant which we set at 20 to make PKT Electrum verify around 200 blocks total. With K = 20 , the first 20 blocks have a 100% chance of being verified. * block 21 has a 95% chance * block 25 has an 80% chance * block 50 has a 40% chance * block 80 has a 25% chance The distribution of likelyhood of verifying a block is shown by this chart:","title":"Statistical Verification"},{"location":"electrum/#running-an-electrumx-server","text":"If you would like to participate in running your own ElectrumX server to help the PKT Electrum network, you can do so using a simple Docker command. Check out the Docker PKT Electrumx project for more information about how to run an instance.","title":"Running an ElectrumX server"},{"location":"learn/network-steward/","text":"What is the Network Steward? \u00b6 Introducing the Network Steward \u00b6 The Network Steward is a mechanism built into the PKT blockchain to ensure there is continuous funding to build out the project roadmap. Since PKT is completely decentralized, with no central company, foundation or investors behind the project, the Network Steward is able to provide perpetual funding for development. As part of the consensus rules of the PKT blockchain, the publicly visible Network Steward wallet address receives 20% of every newly mined block. 100% of the funds are mandated to be paid out in the form of grants towards funding the Network Steward\u2019s areas of interest, including open-source technology development of the PKT Network. Unlike a pre-mine or founder's fee, the recipient of the Network Steward payout can be changed by a PoS vote. All coins that are not allocated within 129,600 blocks (~3 months) are automatically burned. More than 13% of the mined coins have been burned through 2022. You can check out the status of the burned coins and PoS vote to re-elect the Network Steward page on the block explorer page [here]. https://explorer.pkt.cash/address pkt1q6hqsqhqdgqfd8t3xwgceulu7k9d9w5t2amath0qxyfjlvl3s3u4sjza2g2 Who is the Network Steward? \u00b6 This Network Steward address is a multi-signature group that requires 3 out of 5 signatures in order to make a payment. The current Network Stewards* are: Cjd \u2014 cjdns original author Arceliar \u2014 Yggdrasil original author Benhylau \u2014 Contributor at Toronto Mesh NeilAlexander \u2014 Yggdrasil release manager Backupbrain \u2014 Creator of NetNinja VPN device All of the participants have agreed not to enter into any relationships which would affect their ability to act impartially on behalf of the PKT project. How does the Network Steward Operate? \u00b6 The persons in custody of the Network Steward wallet periodically meet to award grants in accordance with a strict criteria and mandate. The current mandate is that funds are to be used for: Financing the development of open source software, technology documentation and education resources for the PKT Network and community. Lobbying for an improved regulator environment for small network operators and more generally, to promote internet freedom, privacy, and decentralized internet access. Purchasing property such as proprietary software or radio frequency spectrum rights in order to put these things in the commons. It is the belief of the PKT blockchain founding developers that any unaccountable authority, no matter how benevolent, will eventually fall victim to corruption, inefficiency or simple failure to innovate. Because of this, the PKT blockchain has an impeachment solution whereby every holder of PKT is able to cast a vote to impeach the Network Steward so a new Network Steward can take its place. Impeachment is not an insignificant event. For it to occur, it requires more than a 50% of the total PKT ever mined to \u201cVoteFor\u201d impeachment. If impeachment does occur, what follows is an automatic vote count and a change to the Network Steward address. How are Grants Awarded? \u00b6 Grants are awarded based on a funding criteria that is outlined on the Network Steward Github [here]. You start by socializing what you want to do with the community (try PKT.Chat, Discord or Telegram). When you have rough consensus, you move that conversation to a formal proposal. There are currently two ways to propose a project to the PKT Network Steward. If your project is large and has the benefit of accountants to be able to verify that the money has been spent appropriately, you can make a proposal directly to the Network Steward through its github [here]. Click [here] to submit a proposal Click [here] to download the submission template The Network Steward opens calls with a specified budget from time to time. Anyone can apply during these open calls. The Network Steward meets several times per year to review submitted projects. The minutes of these meetings are published in the github repository, along with the ongoing project statuses. Every transaction made by the Network Steward can be seen in the block explorer and is referred to in the Network Steward's github repository explaining the project that was funded. To make a proposal, you must create a pull request to the github repository and name it according to the naming convention defined in the repository readme. This adds a new project markdown file, as per the project template. Getting a proposal accepted is much like getting a pull request merged into a project. If you want to propose a smaller project and have the accounting and official reporting managed for you, you can propose to the User Operated Internet fund [here], which is funded by the Network Steward and administered by NLnet. NLnet is a well respected public benefit organization that is experienced at managing technology development projects. Network Steward Voting \u00b6 How voting works \u00b6 A vote consists of one two parts, VoteFor and VoteAgainst. VoteAgainst is a vote for impeachment, while VoteFor is a vote for who should become network steward in the event of an impeachment. A network steward is represented as a transaction output script rather than a script encoded key. An easy way to get the script for a given address is to pay some money to it and then explore the raw transaction and copy the output. Exploring a coinbase transaction we can see the output being paid to the network steward https://explorer.pkt.cash/address/ and the script for this output is 0020d5c1005c0d4012d3ae2672319e7f9eb15a57516aeefabbbc062265f67e308f2 If we double-check by querying pktd to find out what is the network steward, we will see that it shows the script that was paid to. So if we wanted, for instance, to change the network steward to https://explorer.pkt.cash/address/pGzmtW4Q2v4AWHcX8TYGqG5c1Eh5Ykg6fX, we would want to vote for the corresponding script 76a9147d9df4279212fd7def4c47abf2d5f3a6c6eaf4ae88ac and of course we probably want to vote against the current network steward as well. How to vote \u00b6 Voting is done by configuring your wallet to vote, whenever you spend money, your wallet will include a vote in every future payment of PKT which is made. If you want to speed up the voting process, you can configure your wallet to vote and then transfer all of your PKT to another wallet, in order to be sure it will all be voting. To configure your wallet to vote for https://explorer.pkt.cash/address/pGzmtW4Q2v4AWHcX8TYGqG5c1Eh5Ykg6fX and against https://explorer.pkt.cash/address, you would use the following workflow:","title":"What is the Network Steward?"},{"location":"learn/network-steward/#what-is-the-network-steward","text":"","title":"What is the Network Steward?"},{"location":"learn/network-steward/#introducing-the-network-steward","text":"The Network Steward is a mechanism built into the PKT blockchain to ensure there is continuous funding to build out the project roadmap. Since PKT is completely decentralized, with no central company, foundation or investors behind the project, the Network Steward is able to provide perpetual funding for development. As part of the consensus rules of the PKT blockchain, the publicly visible Network Steward wallet address receives 20% of every newly mined block. 100% of the funds are mandated to be paid out in the form of grants towards funding the Network Steward\u2019s areas of interest, including open-source technology development of the PKT Network. Unlike a pre-mine or founder's fee, the recipient of the Network Steward payout can be changed by a PoS vote. All coins that are not allocated within 129,600 blocks (~3 months) are automatically burned. More than 13% of the mined coins have been burned through 2022. You can check out the status of the burned coins and PoS vote to re-elect the Network Steward page on the block explorer page [here]. https://explorer.pkt.cash/address pkt1q6hqsqhqdgqfd8t3xwgceulu7k9d9w5t2amath0qxyfjlvl3s3u4sjza2g2","title":"Introducing the Network Steward"},{"location":"learn/network-steward/#who-is-the-network-steward","text":"This Network Steward address is a multi-signature group that requires 3 out of 5 signatures in order to make a payment. The current Network Stewards* are: Cjd \u2014 cjdns original author Arceliar \u2014 Yggdrasil original author Benhylau \u2014 Contributor at Toronto Mesh NeilAlexander \u2014 Yggdrasil release manager Backupbrain \u2014 Creator of NetNinja VPN device All of the participants have agreed not to enter into any relationships which would affect their ability to act impartially on behalf of the PKT project.","title":"Who is the Network Steward?"},{"location":"learn/network-steward/#how-does-the-network-steward-operate","text":"The persons in custody of the Network Steward wallet periodically meet to award grants in accordance with a strict criteria and mandate. The current mandate is that funds are to be used for: Financing the development of open source software, technology documentation and education resources for the PKT Network and community. Lobbying for an improved regulator environment for small network operators and more generally, to promote internet freedom, privacy, and decentralized internet access. Purchasing property such as proprietary software or radio frequency spectrum rights in order to put these things in the commons. It is the belief of the PKT blockchain founding developers that any unaccountable authority, no matter how benevolent, will eventually fall victim to corruption, inefficiency or simple failure to innovate. Because of this, the PKT blockchain has an impeachment solution whereby every holder of PKT is able to cast a vote to impeach the Network Steward so a new Network Steward can take its place. Impeachment is not an insignificant event. For it to occur, it requires more than a 50% of the total PKT ever mined to \u201cVoteFor\u201d impeachment. If impeachment does occur, what follows is an automatic vote count and a change to the Network Steward address.","title":"How does the Network Steward Operate?"},{"location":"learn/network-steward/#how-are-grants-awarded","text":"Grants are awarded based on a funding criteria that is outlined on the Network Steward Github [here]. You start by socializing what you want to do with the community (try PKT.Chat, Discord or Telegram). When you have rough consensus, you move that conversation to a formal proposal. There are currently two ways to propose a project to the PKT Network Steward. If your project is large and has the benefit of accountants to be able to verify that the money has been spent appropriately, you can make a proposal directly to the Network Steward through its github [here]. Click [here] to submit a proposal Click [here] to download the submission template The Network Steward opens calls with a specified budget from time to time. Anyone can apply during these open calls. The Network Steward meets several times per year to review submitted projects. The minutes of these meetings are published in the github repository, along with the ongoing project statuses. Every transaction made by the Network Steward can be seen in the block explorer and is referred to in the Network Steward's github repository explaining the project that was funded. To make a proposal, you must create a pull request to the github repository and name it according to the naming convention defined in the repository readme. This adds a new project markdown file, as per the project template. Getting a proposal accepted is much like getting a pull request merged into a project. If you want to propose a smaller project and have the accounting and official reporting managed for you, you can propose to the User Operated Internet fund [here], which is funded by the Network Steward and administered by NLnet. NLnet is a well respected public benefit organization that is experienced at managing technology development projects.","title":"How are Grants Awarded?"},{"location":"learn/network-steward/#network-steward-voting","text":"","title":"Network Steward Voting"},{"location":"learn/network-steward/#how-voting-works","text":"A vote consists of one two parts, VoteFor and VoteAgainst. VoteAgainst is a vote for impeachment, while VoteFor is a vote for who should become network steward in the event of an impeachment. A network steward is represented as a transaction output script rather than a script encoded key. An easy way to get the script for a given address is to pay some money to it and then explore the raw transaction and copy the output. Exploring a coinbase transaction we can see the output being paid to the network steward https://explorer.pkt.cash/address/ and the script for this output is 0020d5c1005c0d4012d3ae2672319e7f9eb15a57516aeefabbbc062265f67e308f2 If we double-check by querying pktd to find out what is the network steward, we will see that it shows the script that was paid to. So if we wanted, for instance, to change the network steward to https://explorer.pkt.cash/address/pGzmtW4Q2v4AWHcX8TYGqG5c1Eh5Ykg6fX, we would want to vote for the corresponding script 76a9147d9df4279212fd7def4c47abf2d5f3a6c6eaf4ae88ac and of course we probably want to vote against the current network steward as well.","title":"How voting works"},{"location":"learn/network-steward/#how-to-vote","text":"Voting is done by configuring your wallet to vote, whenever you spend money, your wallet will include a vote in every future payment of PKT which is made. If you want to speed up the voting process, you can configure your wallet to vote and then transfer all of your PKT to another wallet, in order to be sure it will all be voting. To configure your wallet to vote for https://explorer.pkt.cash/address/pGzmtW4Q2v4AWHcX8TYGqG5c1Eh5Ykg6fX and against https://explorer.pkt.cash/address, you would use the following workflow:","title":"How to vote"},{"location":"learn/packetcrypt/","text":"What is PacketCrypt? \u00b6 PacketCrypt is the world\u2019s first bandwidth-hard proof of work. It is the software that miners install to mine PKT Cash and which constructs the unique foundation of the PKT Blockchain. The PacketCrypt protocol is designed to reward miners in PKT Cash for transmitting data around the world. This incentivizes and requires high CPU encryption plus maximum bandwidth throughput to optimize yields. Miners are required to become hyper aware of and motivated to increase their bandwidth upload and download throughput to efficiently communicate with nodes across the network. PKT mining favors increased bandwidth over CPU power, rewarding people that connect high speed bandwidth infrastructure to the network. PacketCrypt utilizes 2 distinct stages: announcement mining and block mining. Any internet connected device can become an announcement miner and mine PKT Cash by installing and running the PacketCrypt software. Announcement miners running PacketCrypt upload small, difficult to compress (1KB) messages called announcements to block miners. Block miners, otherwise known as PKT mining pools, must maximize the number of announcements they collect for each block. To accomplish this, PKT mining pools can get a discount on the difficulty of the work they must do by coordinating with community announcement miners and fairly paying announcement miners in PKT Cash to continuously supply them with fresh announcements. Optimal mining results are achieved through this cooperation between miners. The result is a fully decentralized network topography that is powered by the people. These various announcement miners and PKT mining pools represent the core infrastructure of the PKT Network, along with its integrated VPN and wifi sharing capabilities. To learn more about PacketCrypt check out the introduction to PKT Mining [here].","title":"What is PacketCrypt?"},{"location":"learn/packetcrypt/#what-is-packetcrypt","text":"PacketCrypt is the world\u2019s first bandwidth-hard proof of work. It is the software that miners install to mine PKT Cash and which constructs the unique foundation of the PKT Blockchain. The PacketCrypt protocol is designed to reward miners in PKT Cash for transmitting data around the world. This incentivizes and requires high CPU encryption plus maximum bandwidth throughput to optimize yields. Miners are required to become hyper aware of and motivated to increase their bandwidth upload and download throughput to efficiently communicate with nodes across the network. PKT mining favors increased bandwidth over CPU power, rewarding people that connect high speed bandwidth infrastructure to the network. PacketCrypt utilizes 2 distinct stages: announcement mining and block mining. Any internet connected device can become an announcement miner and mine PKT Cash by installing and running the PacketCrypt software. Announcement miners running PacketCrypt upload small, difficult to compress (1KB) messages called announcements to block miners. Block miners, otherwise known as PKT mining pools, must maximize the number of announcements they collect for each block. To accomplish this, PKT mining pools can get a discount on the difficulty of the work they must do by coordinating with community announcement miners and fairly paying announcement miners in PKT Cash to continuously supply them with fresh announcements. Optimal mining results are achieved through this cooperation between miners. The result is a fully decentralized network topography that is powered by the people. These various announcement miners and PKT mining pools represent the core infrastructure of the PKT Network, along with its integrated VPN and wifi sharing capabilities. To learn more about PacketCrypt check out the introduction to PKT Mining [here].","title":"What is PacketCrypt?"},{"location":"learn/pkt-cash/","text":"What is PKT Cash? \u00b6 PKT is a native coin that is mined by PKT mining pools and paid to announcement miners when running the PacketCrypt mining algorithm. There is no centralized issuer of PKT Cash, no pre-mine, and no centralized treasury. PKT Cash\u2019s minimum value is the cost to mine the coin, which includes processing power, plus bandwidth. PKT Cash is a Bitcoin fork and true proof of work, so it is a coin, not a token. PKT blocktimes are every 60 seconds, which makes PKT 10x faster than Bitcoin. Currently PKT can handle approximately 70-100 transactions per second. However, PKT Cash is designed for microtransactions with near-zero gas fees. In 2023, PKT Cash will become Lightning Network enabled using the PKT Lightning Daemon (PLD). PLD will enable PKT to process near-infinite transactions per second. Since PKT Cash is generated from a fully decentralized fork of Bitcoin, it is considered to be a commodity, similar to Bitcoin. Additionally, since PKT is a fully decentralized clone of the Bitcoin codebase, the legal and regulatory framing is probably similar.","title":"What is PKT Cash?"},{"location":"learn/pkt-cash/#what-is-pkt-cash","text":"PKT is a native coin that is mined by PKT mining pools and paid to announcement miners when running the PacketCrypt mining algorithm. There is no centralized issuer of PKT Cash, no pre-mine, and no centralized treasury. PKT Cash\u2019s minimum value is the cost to mine the coin, which includes processing power, plus bandwidth. PKT Cash is a Bitcoin fork and true proof of work, so it is a coin, not a token. PKT blocktimes are every 60 seconds, which makes PKT 10x faster than Bitcoin. Currently PKT can handle approximately 70-100 transactions per second. However, PKT Cash is designed for microtransactions with near-zero gas fees. In 2023, PKT Cash will become Lightning Network enabled using the PKT Lightning Daemon (PLD). PLD will enable PKT to process near-infinite transactions per second. Since PKT Cash is generated from a fully decentralized fork of Bitcoin, it is considered to be a commodity, similar to Bitcoin. Additionally, since PKT is a fully decentralized clone of the Bitcoin codebase, the legal and regulatory framing is probably similar.","title":"What is PKT Cash?"},{"location":"learn/pkt-network/","text":"PKT Documentation \u00b6 Documentation for the PKT project Wallet setup \u00b6 There are several wallets which you can choose from, the easiest to set up are PKT Electrum which has a Graphical UI and supports Windows, Mac and Linux. PKT Wallet which has a Graphical UI and supports MacOS and works great with miners. Pkt.world Wallet which has a Graphical UI for Windows, works with miners and includes a built-in miner. You can also setup PKT Wallet which is command line only but has greater scalability and privacy features. Mining \u00b6 PKT is mined using the PacketCrypt bandwidth hard mining algorithm. You can learn how to mine on the Mining page. Running a pktd instance \u00b6 You can setup a pktd instance using the instructions on pktd . Help and Community \u00b6 To get help with the technologies in the PKT project or to hang out in the community join us on the PKT Chat project chat.","title":"PKT Documentation"},{"location":"learn/pkt-network/#pkt-documentation","text":"Documentation for the PKT project","title":"PKT Documentation"},{"location":"learn/pkt-network/#wallet-setup","text":"There are several wallets which you can choose from, the easiest to set up are PKT Electrum which has a Graphical UI and supports Windows, Mac and Linux. PKT Wallet which has a Graphical UI and supports MacOS and works great with miners. Pkt.world Wallet which has a Graphical UI for Windows, works with miners and includes a built-in miner. You can also setup PKT Wallet which is command line only but has greater scalability and privacy features.","title":"Wallet setup"},{"location":"learn/pkt-network/#mining","text":"PKT is mined using the PacketCrypt bandwidth hard mining algorithm. You can learn how to mine on the Mining page.","title":"Mining"},{"location":"learn/pkt-network/#running-a-pktd-instance","text":"You can setup a pktd instance using the instructions on pktd .","title":"Running a pktd instance"},{"location":"learn/pkt-network/#help-and-community","text":"To get help with the technologies in the PKT project or to hang out in the community join us on the PKT Chat project chat.","title":"Help and Community"},{"location":"learn/pkt/","text":"What is PKT? \u00b6 PKT is an open source, layer 1 blockchain project and decentralized physical infrastructure (DePIN) mesh network powered by its global community. The project supports open internet access and scaling the decentralized web. The PKT project supports the core vision that basic, censorship-resistant internet access should be globally accessible. Rather than pay centralized companies for internet access, it\u2019s designed so basic access can be free and people can pay providers when they need fast speeds. PKT utilizes the cjdns routing protocol to enable a decentralized, censorship-resistant, high-speed data network. The PKT Network is a completely sovereign part of the internet, which is accessible via VPN. Anyone can build censorship-resistant websites in the PKT Network. These websites can use their IPv6 web URL as a PKT payment address, streamlining peer-to-peer payments in the network. There are many reasons why open internet access is important, but none are more fundamental than lowering the barrier to entry so access to information and connectivity is available to everyone. By participating in the PKT project, and holding the PKT cryptocurrency, you are helping restore the founding ethos of the internet: decentralization. Why does PKT exist? \u00b6 Connectivity is humanity\u2019s source of vitality, information and communication. PKT stands for the belief that internet access is a human entitlement. However, lowering the barrier for internet access is not in the best interest of centralized companies, internet service providers (ISP) and governments. Why? Because these entities are motivated by money and power, and their control is diminished if global internet access is free. Additionally, many corporations and governments don\u2019t support free unlimited internet access due to regional or political censorship ideologies or capitalist priorities. Despite the founding principle for the internet to be decentralized, today, internet access is not. It is for these reasons that PKT is designed to usher in a new paradigm of connectivity. This helps realize a new era, where the physical infrastructure of the internet is powered by the people, and accessibility is open and free. How does PKT Expand Internet Access? \u00b6 The PKT project presents an alternative approach to traditional internet service through mesh networking. First, PKT economically incentivizes individuals who have internet access to set up a PKT miner and contribute computer processing and bandwidth to secure the PKT blockchain. Similar to how Bitcoin miners earn BTC as they mine the Bitcoin, PKT miners earn PKT when they mine PKT. Since PKT mining requires bandwidth, this creates a general demand for bandwidth. Second, individuals with bandwidth can set up a cjdns node. Cjdns is the mesh networking protocol that enables the high speed data infrastructure for the PKT Network. As more people connect, this builds a decentralized, peer-to-peer network. Third, individuals can share mesh network internet access to the PKT Network. This internet access functions similar to a wifi access point. However, all connectivity is end-to-end encrypted. Wifi access point operators can choose to offer free access or paid access. The objective of the PKT Network is to decouple the physical aspect of deploying and maintaining internet infrastructure (such as overhead and undersea cables), from the business and technical aspects of internet service such as billing, network engineering, and support. This way anyone can safely and securely become an internet provider via mesh networking, thus expanding internet access worldwide. The fundamental value of dividing these internet service efforts is to empower everyday people to cover the cost of deploying and maintaining mesh network wifi access points. This ultimately lowers the cost of providing localized internet access and drives competition in the multi-trillion dollar annual internet industry. This can result in PKT\u2019s mission to get the next billion people online. How can PKT Accomplish Its Goals? \u00b6 Community projects can achieve the best results when focused on use cases, utility and community participation. When inspiring community participation, three core reasons people may take action: necessity they believe strongly they are being paid In the mission to extend internet access and expand the decentralized web, PKT economically incentivizes individuals to participate. Additionally, many contributors truly believe in the mission to connect the unconnected. Since PKT is a fully decentralized community project, like Bitcoin, everyone in the community is part of the project team. There is no central authority or centralized infrastructure. However, there are many businesses and contributors in the PKT ecosystem who are developing the [roadmap]. This fosters the decentralized nature of the project. Visit the Ecosystem page [here] to see a (non-exhaustive) list of the major projects and contributors. How does the PKT blockchain work? \u00b6 PKT is the world\u2019s first and only bandwidth-hard proof-of-work blockchain. Anyone with internet access can install the mining software called PacketCrypt and start mining to earn PKT Cash. Just as Bitcoin introduced the dawn of a new era of digital money, PKT is introducing a new paradigm for how people can use their internet resources to expand internet accessibility. Click here to learn more about PacketCrypt. How can I set up a miner? \u00b6 For a tutorial on how to start mining PKT and earn PKT Cash, for this guide: [Intro to PKT Mining].","title":"What is PKT?"},{"location":"learn/pkt/#what-is-pkt","text":"PKT is an open source, layer 1 blockchain project and decentralized physical infrastructure (DePIN) mesh network powered by its global community. The project supports open internet access and scaling the decentralized web. The PKT project supports the core vision that basic, censorship-resistant internet access should be globally accessible. Rather than pay centralized companies for internet access, it\u2019s designed so basic access can be free and people can pay providers when they need fast speeds. PKT utilizes the cjdns routing protocol to enable a decentralized, censorship-resistant, high-speed data network. The PKT Network is a completely sovereign part of the internet, which is accessible via VPN. Anyone can build censorship-resistant websites in the PKT Network. These websites can use their IPv6 web URL as a PKT payment address, streamlining peer-to-peer payments in the network. There are many reasons why open internet access is important, but none are more fundamental than lowering the barrier to entry so access to information and connectivity is available to everyone. By participating in the PKT project, and holding the PKT cryptocurrency, you are helping restore the founding ethos of the internet: decentralization.","title":"What is PKT?"},{"location":"learn/pkt/#why-does-pkt-exist","text":"Connectivity is humanity\u2019s source of vitality, information and communication. PKT stands for the belief that internet access is a human entitlement. However, lowering the barrier for internet access is not in the best interest of centralized companies, internet service providers (ISP) and governments. Why? Because these entities are motivated by money and power, and their control is diminished if global internet access is free. Additionally, many corporations and governments don\u2019t support free unlimited internet access due to regional or political censorship ideologies or capitalist priorities. Despite the founding principle for the internet to be decentralized, today, internet access is not. It is for these reasons that PKT is designed to usher in a new paradigm of connectivity. This helps realize a new era, where the physical infrastructure of the internet is powered by the people, and accessibility is open and free.","title":"Why does PKT exist?"},{"location":"learn/pkt/#how-does-pkt-expand-internet-access","text":"The PKT project presents an alternative approach to traditional internet service through mesh networking. First, PKT economically incentivizes individuals who have internet access to set up a PKT miner and contribute computer processing and bandwidth to secure the PKT blockchain. Similar to how Bitcoin miners earn BTC as they mine the Bitcoin, PKT miners earn PKT when they mine PKT. Since PKT mining requires bandwidth, this creates a general demand for bandwidth. Second, individuals with bandwidth can set up a cjdns node. Cjdns is the mesh networking protocol that enables the high speed data infrastructure for the PKT Network. As more people connect, this builds a decentralized, peer-to-peer network. Third, individuals can share mesh network internet access to the PKT Network. This internet access functions similar to a wifi access point. However, all connectivity is end-to-end encrypted. Wifi access point operators can choose to offer free access or paid access. The objective of the PKT Network is to decouple the physical aspect of deploying and maintaining internet infrastructure (such as overhead and undersea cables), from the business and technical aspects of internet service such as billing, network engineering, and support. This way anyone can safely and securely become an internet provider via mesh networking, thus expanding internet access worldwide. The fundamental value of dividing these internet service efforts is to empower everyday people to cover the cost of deploying and maintaining mesh network wifi access points. This ultimately lowers the cost of providing localized internet access and drives competition in the multi-trillion dollar annual internet industry. This can result in PKT\u2019s mission to get the next billion people online.","title":"How does PKT Expand Internet Access?"},{"location":"learn/pkt/#how-can-pkt-accomplish-its-goals","text":"Community projects can achieve the best results when focused on use cases, utility and community participation. When inspiring community participation, three core reasons people may take action: necessity they believe strongly they are being paid In the mission to extend internet access and expand the decentralized web, PKT economically incentivizes individuals to participate. Additionally, many contributors truly believe in the mission to connect the unconnected. Since PKT is a fully decentralized community project, like Bitcoin, everyone in the community is part of the project team. There is no central authority or centralized infrastructure. However, there are many businesses and contributors in the PKT ecosystem who are developing the [roadmap]. This fosters the decentralized nature of the project. Visit the Ecosystem page [here] to see a (non-exhaustive) list of the major projects and contributors.","title":"How can PKT Accomplish Its Goals?"},{"location":"learn/pkt/#how-does-the-pkt-blockchain-work","text":"PKT is the world\u2019s first and only bandwidth-hard proof-of-work blockchain. Anyone with internet access can install the mining software called PacketCrypt and start mining to earn PKT Cash. Just as Bitcoin introduced the dawn of a new era of digital money, PKT is introducing a new paradigm for how people can use their internet resources to expand internet accessibility. Click here to learn more about PacketCrypt.","title":"How does the PKT blockchain work?"},{"location":"learn/pkt/#how-can-i-set-up-a-miner","text":"For a tutorial on how to start mining PKT and earn PKT Cash, for this guide: [Intro to PKT Mining].","title":"How can I set up a miner?"},{"location":"learn/wpkt/","text":"What is WPKT? \u00b6 WPKT stands for wrapped PKT, thus the \"W\" in WPKT. WPKT exists on Binance Smart Chain blockchain. WPKT can only come into existence when someone sends PKT to the vault address, which converts the PKT into WPKT. As such, WPKT cannot be inflated since it has a 1-to-1 peg with PKT. Since there will only ever be 6 billion PKT in existence, there can never be more WPKT than the total amount of PKT in existence. WPKT is an BEP-20 token and is compatible with all platforms and wallets that accept and transact with the BEP-20 token standard. To learn how to swap PKT to WPK or visa versa, click [here].","title":"What is WPKT?"},{"location":"learn/wpkt/#what-is-wpkt","text":"WPKT stands for wrapped PKT, thus the \"W\" in WPKT. WPKT exists on Binance Smart Chain blockchain. WPKT can only come into existence when someone sends PKT to the vault address, which converts the PKT into WPKT. As such, WPKT cannot be inflated since it has a 1-to-1 peg with PKT. Since there will only ever be 6 billion PKT in existence, there can never be more WPKT than the total amount of PKT in existence. WPKT is an BEP-20 token and is compatible with all platforms and wallets that accept and transact with the BEP-20 token standard. To learn how to swap PKT to WPK or visa versa, click [here].","title":"What is WPKT?"},{"location":"mining/","text":"Mining \u00b6 PacketCrypt is a bandwidth hard proof of work , this means it requires lots of bandwidth to mine. Miners collaborate with one another by sending small messages (called Announcements ) and the sending of these messages requires a large amount of bandwidth . Miners who are working in collaboration with one another are members of a mining pool, therefore all mining of PacketCrypt is done in pools. PacketCrypt mining is split into two distinct stages: Announcement Mining - Using your CPU to create Announcements Block Mining - Collecting Announcements from Announcement Miners and using them to mine blocks Block mining is typically done at the mining pool's datacenter, however Announcement mining can be done from anywhere. How to Announcement mine \u00b6 There are a number of options available when it comes to installing the PacketCrpyt announcement miner. Choose whichever best suits your technical ability: 1. Install a Pre-built Binary \u00b6 Pre-built packetcrypt binaries (for linux) or installation packages (for macos) and archives (for windows) can be downloaded from packetcrypt releases page . For windows , download the zip archive suffixed with -windows.zip and extract its content. For macos , download the package suffixed with .pkg and click on its icon in the Finder for installation. For linux , download the binary suffixed with -linux_amd64 and rename it packetcrypt . If you're on Arch linux or Manjaro, you can install the packetcrypt AUR package 2. Deploy a Docker Image \u00b6 There is a PacketCrypt Docker image available, which can be used for announcement mining. To install: Download and install Docker for your operating system. Download the PacketCrypt Docker image: $ docker pull thomasjp0x42/packetcrypt There are also PacketCrypt Docker images built without the portable flag ( --no-portable ) which may increase the performance of the announcement mining while reducing CPU compatibility. One such image (compiled on AMD 5950x) is available at thomasjp0x42/packetcrypt-amd64 . Additionally, for ARM devices such as Raspberry Pi, there is an image available at thomasjp0x42/packetcrypt-arm64 . The arm64 image will also work on Apple silicon such as the M1 and M2 chips. Run the container similar to the commands described in the Begin Announcement Mining section, except replace this part of the command: $ packetcrypt with this command to run PacketCrypt from Docker: $ docker run thomasjp0x42/packetcrypt The final command will be formatted like this: $ docker run thomasjp0x42/packetcrypt ann -p More information can be found at the PacketCrypt DockerHub page 3. Build From Source \u00b6 Building from source will generally offer the best mining performance but requires more technical knowledge than the previous two options. First install rust if you haven't, see: rustup git clone https://github.com/cjdelisle/packetcrypt_rs cd packetcrypt_rs cargo build --release See the PacketCrypt GitHub repository for more detailed instructions. Begin Announcement Mining \u00b6 Important You cannot mine into the electrum wallet , You can only mine into the Command Line Wallet , the Pkt.World Wallet or the Mac GUI Wallet . To begin mining, you will need the address of your wallet and you will need to choose a pool. There are two ways to configure the announcement miner; by using CLI parameters or by using a configuration file: Using the CLI packetcrypt ann -p pool_1 [pool_2 pool_3 pool_4] [or for windows] packetcrypt.exe ann -p pool_1 [pool_2 pool_3 pool_4] Using a Configuration File A configuration file must be in JSON format. The file can be loaded from the local filesystem or from a web-accessible location. Any CLI parameters used will overide the corresponding settings in the configuration file. Example config.json: { \"payment_addr\": \"\", \"pools\": [ \"pool_1\", \"pool_2\", \"pool_3\", \"pool_4\" ] } packetcrypt ann -c \"./config.json\" [or] packetcrypt ann -c \"https://example.com/config.json\" [or for windows] packetcrypt.exe ann -c \"./config.json\" [or] packetcrypt.exe ann -c \"https://example.com/config.json\" Announcement mining can be done into a single pool or multiple pools. When you announcement mine into multiple pools, you will be paid by each pool that you submit announcements to. pool_1 is the pool running the highest difficulty. If you notice problems, you can test listing the pools in a different order. The number of pools you mine into is at your discretion. If a pool is down or malfunctioning you will notice the pool is not mining at [100%] in your mining feed and you can choose to remove the under-performing or malfunctioning pool. How to install a PKT miner on Mac \u00b6 Install the Zulu or CLI PKT Wallet from https://docs.pkt.cash Download the PacketCrypt.pkg for mac Open your Terminal Install Rust by entering in the command: $ curl --proto '=https' --tlsv1.2 -sSf * https://sh.rustup.rs | sh Press 1 to confirm Enter the command: $ sudo install make Enter the command: $ git clone https://github.com/cjdelisle/packetcrypt_rs Enter the command: $ cd packetcrypt_rs Enter the command: $ ~/.cargo/bin/cargo build --release Enter the command: $ ./target/release/packetcrypt ann -p [your PKT Wallet Address] [pool 1] [pool 2] [pool 3] [pool 4] Choosing Pools to mine in \u00b6 You can mine in as many pools as you have the bandwidth to supply. The same data will be uploaded so your CPU is only used once. Currently the pools which are regularly winning blocks include: Pkteer: http://pool.pkteer.com PKTPool: http://pool.pktpool.io PktWorld: http://pool.pkt.world Zetahash (f.k.a. Srizbi): https://stratum.zetahash.com In general the recommendation is to list the pool with highest difficulty in the first position to ensure your announcements will be accepted, as the standardized policy is to accept announcements of a higher difficulty for pools with a lower base difficulty. In some cases the rewards might vary depending on the pool order regardless of difficulty, subject to custom policies implemented by the respective pools. (Check the relevant channels on Discord for current pool statuses) You should test your daily earnings on each pool to see which one is best. Your mining revenue depends on how much each pool allocates towards announcement miners as well as how much hardware they are using in-house. The pools are winning different blocks and if you mine to just one pool, you're not getting any payment from the others when they win a block. It's the same with mining to a pool that is not winning any blocks. Limiting System Resource Usage \u00b6 Limiting the system resources available to Packetcrypt may negatively effect your mining power but can be useful to conserve resources for other processess. Limit CPU Usage \u00b6 Announcement mining is a resource intensive process. By default, Packetcrypt will use 100% of the available CPU resources. CPU usage can be limited by assigning a limited number of threads to packetcrypt using the -t CLI parameter or \"threads\" key if using a configuration file. Example of assigning four (4) threads to Packetcrypt: packetcrypt ann -p pool_1 [pool_2 pool_3 pool_4] -t 4 or { \"threads\" 4 } Limit Bandwidth Usage \u00b6 Bandwidth usage is directly related to two main factors: 1 - Mining difficulty of the primary pool (the first pool listed in Packetcrypt pool configuration) A lower difficulty means higher bandwidth usage 2 - The number of pools mined Packetcrypt will send the same Announcements to each pool mined Bandwidth usage can therefore be limited by selecting a higher difficulty pool as the primary pool and/or by mining to fewer pools. Block Mining & Running a Pool \u00b6 Because each block miner must use as much bandwidth as all of the announcement miners combined , block mining is typically done at the location of the pool. Even a pool operator who wanted to support external block mining would find that the pool itself would need enough upload bandwidth to match all of the block miners - which would be completely untenable. If you are interested in block mining, contact the pool operator and discuss sending hardware to their location. Starting your own pool requires setting up a number of services: pktd node (one or more) - One pktd instance is required for the Master to function, each of the Block Handlers may optionally use separate pktd nodes. Master (one) - This node coordinates all of the others and provides work files and configuration Ann Handler (one or more) - These are high performance nodes which accept announcements from the announcement miners in the network, they also provide announcements to the block miners. As you scale up the amount of bandwidth in the pool, you will need to add more Ann handlers. Block Miner (one or more) - These nodes download announcements from the announcement handlers and use them in the mining process to mine blocks. Block Handlers (one or more) - These nodes receive \"block shares\" from the block miners and submit blocks if Paymaker (1) - This node receives updates from the Ann Handlers and Block Handlers and keeps track of who should be paid. The Paymaker sends configuration to the pktd node which is used by the Master in order to make the pool pay out the announcement and block miners PacketCrypt Data Flow \u00b6 \u2588 Orange: Announcements are sent from the Announcement miners to the Ann Handlers and then to the Block miners \u2588 Blue: Block shares are sent from block miners to Block Handler(s) \u2588 Purple: Winning blocks are submitted by the Block Handler(s) to pktd and the PKT network \u2588 Pink: Block Handlers and Ann Handlers inform Paymaker of work done by announcement and block miners \u2588 Green: Paymaker configures pktd instance to create blocks which pay the people who have been mining \u2588 Brown: Master gets block templates from pktd instance Black dotted line: All nodes request configuration and block templates from Master node More Information and PacketCrypt Pool Code \u00b6 The code and documentation for running a pool is available on the C / nodejs version of the PacketCrypt project, the new Rust version only contains Announcement Miner and Announcement Handlers. Announcement Difficulty \u00b6 PacketCrypt is designed in such a way that a mining pool can double its effective power by: Doubling the total block mining computation effort Doubling the total announcement mining computation effort, or Doubling the amount of bandwidth between announcement miners and the pool The way that a pool operator limits the amount of bandwidth flowing into the pool, to prevent overloading of the network, is by setting what is known as the announcement difficulty . The announcement difficulty for a pool specifies how much work must be done on an announcement in order for the announcement to be accepted and paid out by the pool. Announcement difficulty serves to slow down the announcement miners to protect the pool's network. In general, doubling the announcement difficulty will halve the amount of bandwidth used by the pool and will also halve the pool's overall mining power, with a limit that setting the announcement difficulty lower than 2 does not bring any additional value. To explain why it works like this, we need to examine the PacketCrypt algorithm rules and the in particular how the block mining software decides which announcements to use when attempting to mine a block. Announcement Set Selection \u00b6 PacketCrypt algorithm allows block miners to perform less work if they are able to prove that they had a certain number of \"high value\" announcements in memory at the time of mining, the exact ratio of actual work a block miner must do to the amount of work the PKT blockchain requires is called the power multipler . For a block miner seeking to optimize their power multiplier, every announcement has a particular level of utility value which is based on the amount of work that was done by the announcement miner (announcement difficulty) and how old the announcement is. We call this the effective difficulty . The effective difficulty of an announcement starts off as the actual difficulty of the work done to mine it and then decreases by half every block-period until it is less than 1 and the announcement is no longer usable for mining. The block mining software selects a subset of announcements which which will give it the best power multiplier based on the PacketCrypt algorithm: power_multiplier = min(effective_difficulty) * ann_count ** 2 The min(effective_difficulty) is the effective difficulty of the \"least valuable\" announcement that is being mined with. Lets assume that announcement miners are providing a steady supply of 1000 announcements per block-period and all announcements have an initial announcement difficulty of 128. The block mining software can choose to mine with 1000 announcements at 128 effective difficulty, or with 2000 announcements at 64 effective difficulty, or with 3000 announcements at 32 effective difficulty and so on. The best choice is to use the previous three block periods which provides a power multiplier that is 225% higher than that of using just the most recent 1 period worth of announcements. This curve is the same no matter what difficulty we are starting with. Optimal Difficulty Curve \u00b6 Knowing that the optimal announcement set is all of those announcements mined over the past 3 block periods, we can compute the overall power of a pool as the announcement difficulty is raised. At announcement difficulty 1, announcements cannot be used for more than 1 block, but if we imagine that the announcement mining community can produce 1000 announcements per block at difficulty 1 then we can reason that the power multiplier will be 1000 ** 2 or 1 million. At difficulty 2 we can expect the announcement miners will produce 500 announcements per block period but since 2 block periods can be used, the power multiplier is the same. At difficulty 4, the announcement miners will produce 250 announcements per block period and they will be valid for 3 block periods making the power multiplier 750 ** 2 or 562,500. From here, the power output of the power multiplier of the optimal announcement set halves for each doubling of the announcement difficulty, making the optimal difficulty 2 . FAQ for ANN Miners \u00b6 What does overflow mean? \u00b6 When the ann handler receives an announcement, it puts it into a queue, when the queue fills up it responds overflow immediately. The queue can become long, so you may receive \"operation timed out\" you're still being paid, when you receive \"overflow\" you are not being paid. Unfortunately, you may also receive \"operation timed out\" because the handler is unresponsive, it's not obvious which is the reason from looking at the logs. For example, what you will see in the AnnMiner Logs: 1618394538 INFO annmine.rs:519 467 Ke/s 28.56Mb/s overflow: [0, 0, 3072, 0] uploading: [0, 0, 17632, 0] accept/reject: [26932/0, 0/0, 4856/0, 796/0] - goodrate: [100%, 100%, 61%, 100%] 467 Ke/s 467 kilo-encryptions (thousands of encryptions) per second of mining power. 28.56Mb/s Total upload bandwidth (to all pools - combined) overflow: [0, 0, 3072, 0] Overflowed the internal queue of the ann miner, before it was even able to upload to the pool, one number for each pool you're mining to. 3072 Number of anns which are not uploaded to pool #3. uploading [0, 0, 17632, 0] Number of anns currently in-flight in active http requests, again 3rd pool is a problem, others are doing well (in this example). accept/reject [26932/0, 0/0, 4856/0, 796/0] Anns accepted/rejected by each pool, these numbers are based on the previous 10 seconds, pool #2 is giving a zero accepted which might be an issue, keep watching the next message 10 seconds later for another update. goodrate [100%, 100%, 61%, 100%] Goodrate = number of anns accepted divided by number of anns produced.","title":"Mining"},{"location":"mining/#mining","text":"PacketCrypt is a bandwidth hard proof of work , this means it requires lots of bandwidth to mine. Miners collaborate with one another by sending small messages (called Announcements ) and the sending of these messages requires a large amount of bandwidth . Miners who are working in collaboration with one another are members of a mining pool, therefore all mining of PacketCrypt is done in pools. PacketCrypt mining is split into two distinct stages: Announcement Mining - Using your CPU to create Announcements Block Mining - Collecting Announcements from Announcement Miners and using them to mine blocks Block mining is typically done at the mining pool's datacenter, however Announcement mining can be done from anywhere.","title":"Mining"},{"location":"mining/#how-to-announcement-mine","text":"There are a number of options available when it comes to installing the PacketCrpyt announcement miner. Choose whichever best suits your technical ability:","title":"How to Announcement mine"},{"location":"mining/#1-install-a-pre-built-binary","text":"Pre-built packetcrypt binaries (for linux) or installation packages (for macos) and archives (for windows) can be downloaded from packetcrypt releases page . For windows , download the zip archive suffixed with -windows.zip and extract its content. For macos , download the package suffixed with .pkg and click on its icon in the Finder for installation. For linux , download the binary suffixed with -linux_amd64 and rename it packetcrypt . If you're on Arch linux or Manjaro, you can install the packetcrypt AUR package","title":"1. Install a Pre-built Binary"},{"location":"mining/#2-deploy-a-docker-image","text":"There is a PacketCrypt Docker image available, which can be used for announcement mining. To install: Download and install Docker for your operating system. Download the PacketCrypt Docker image: $ docker pull thomasjp0x42/packetcrypt There are also PacketCrypt Docker images built without the portable flag ( --no-portable ) which may increase the performance of the announcement mining while reducing CPU compatibility. One such image (compiled on AMD 5950x) is available at thomasjp0x42/packetcrypt-amd64 . Additionally, for ARM devices such as Raspberry Pi, there is an image available at thomasjp0x42/packetcrypt-arm64 . The arm64 image will also work on Apple silicon such as the M1 and M2 chips. Run the container similar to the commands described in the Begin Announcement Mining section, except replace this part of the command: $ packetcrypt with this command to run PacketCrypt from Docker: $ docker run thomasjp0x42/packetcrypt The final command will be formatted like this: $ docker run thomasjp0x42/packetcrypt ann -p More information can be found at the PacketCrypt DockerHub page","title":"2. Deploy a Docker Image"},{"location":"mining/#3-build-from-source","text":"Building from source will generally offer the best mining performance but requires more technical knowledge than the previous two options. First install rust if you haven't, see: rustup git clone https://github.com/cjdelisle/packetcrypt_rs cd packetcrypt_rs cargo build --release See the PacketCrypt GitHub repository for more detailed instructions.","title":"3. Build From Source"},{"location":"mining/#begin-announcement-mining","text":"Important You cannot mine into the electrum wallet , You can only mine into the Command Line Wallet , the Pkt.World Wallet or the Mac GUI Wallet . To begin mining, you will need the address of your wallet and you will need to choose a pool. There are two ways to configure the announcement miner; by using CLI parameters or by using a configuration file: Using the CLI packetcrypt ann -p pool_1 [pool_2 pool_3 pool_4] [or for windows] packetcrypt.exe ann -p pool_1 [pool_2 pool_3 pool_4] Using a Configuration File A configuration file must be in JSON format. The file can be loaded from the local filesystem or from a web-accessible location. Any CLI parameters used will overide the corresponding settings in the configuration file. Example config.json: { \"payment_addr\": \"\", \"pools\": [ \"pool_1\", \"pool_2\", \"pool_3\", \"pool_4\" ] } packetcrypt ann -c \"./config.json\" [or] packetcrypt ann -c \"https://example.com/config.json\" [or for windows] packetcrypt.exe ann -c \"./config.json\" [or] packetcrypt.exe ann -c \"https://example.com/config.json\" Announcement mining can be done into a single pool or multiple pools. When you announcement mine into multiple pools, you will be paid by each pool that you submit announcements to. pool_1 is the pool running the highest difficulty. If you notice problems, you can test listing the pools in a different order. The number of pools you mine into is at your discretion. If a pool is down or malfunctioning you will notice the pool is not mining at [100%] in your mining feed and you can choose to remove the under-performing or malfunctioning pool.","title":"Begin Announcement Mining"},{"location":"mining/#how-to-install-a-pkt-miner-on-mac","text":"Install the Zulu or CLI PKT Wallet from https://docs.pkt.cash Download the PacketCrypt.pkg for mac Open your Terminal Install Rust by entering in the command: $ curl --proto '=https' --tlsv1.2 -sSf * https://sh.rustup.rs | sh Press 1 to confirm Enter the command: $ sudo install make Enter the command: $ git clone https://github.com/cjdelisle/packetcrypt_rs Enter the command: $ cd packetcrypt_rs Enter the command: $ ~/.cargo/bin/cargo build --release Enter the command: $ ./target/release/packetcrypt ann -p [your PKT Wallet Address] [pool 1] [pool 2] [pool 3] [pool 4]","title":"How to install a PKT miner on Mac"},{"location":"mining/#choosing-pools-to-mine-in","text":"You can mine in as many pools as you have the bandwidth to supply. The same data will be uploaded so your CPU is only used once. Currently the pools which are regularly winning blocks include: Pkteer: http://pool.pkteer.com PKTPool: http://pool.pktpool.io PktWorld: http://pool.pkt.world Zetahash (f.k.a. Srizbi): https://stratum.zetahash.com In general the recommendation is to list the pool with highest difficulty in the first position to ensure your announcements will be accepted, as the standardized policy is to accept announcements of a higher difficulty for pools with a lower base difficulty. In some cases the rewards might vary depending on the pool order regardless of difficulty, subject to custom policies implemented by the respective pools. (Check the relevant channels on Discord for current pool statuses) You should test your daily earnings on each pool to see which one is best. Your mining revenue depends on how much each pool allocates towards announcement miners as well as how much hardware they are using in-house. The pools are winning different blocks and if you mine to just one pool, you're not getting any payment from the others when they win a block. It's the same with mining to a pool that is not winning any blocks.","title":"Choosing Pools to mine in"},{"location":"mining/#limiting-system-resource-usage","text":"Limiting the system resources available to Packetcrypt may negatively effect your mining power but can be useful to conserve resources for other processess.","title":"Limiting System Resource Usage"},{"location":"mining/#limit-cpu-usage","text":"Announcement mining is a resource intensive process. By default, Packetcrypt will use 100% of the available CPU resources. CPU usage can be limited by assigning a limited number of threads to packetcrypt using the -t CLI parameter or \"threads\" key if using a configuration file. Example of assigning four (4) threads to Packetcrypt: packetcrypt ann -p pool_1 [pool_2 pool_3 pool_4] -t 4 or { \"threads\" 4 }","title":"Limit CPU Usage"},{"location":"mining/#limit-bandwidth-usage","text":"Bandwidth usage is directly related to two main factors: 1 - Mining difficulty of the primary pool (the first pool listed in Packetcrypt pool configuration) A lower difficulty means higher bandwidth usage 2 - The number of pools mined Packetcrypt will send the same Announcements to each pool mined Bandwidth usage can therefore be limited by selecting a higher difficulty pool as the primary pool and/or by mining to fewer pools.","title":"Limit Bandwidth Usage"},{"location":"mining/#block-mining-running-a-pool","text":"Because each block miner must use as much bandwidth as all of the announcement miners combined , block mining is typically done at the location of the pool. Even a pool operator who wanted to support external block mining would find that the pool itself would need enough upload bandwidth to match all of the block miners - which would be completely untenable. If you are interested in block mining, contact the pool operator and discuss sending hardware to their location. Starting your own pool requires setting up a number of services: pktd node (one or more) - One pktd instance is required for the Master to function, each of the Block Handlers may optionally use separate pktd nodes. Master (one) - This node coordinates all of the others and provides work files and configuration Ann Handler (one or more) - These are high performance nodes which accept announcements from the announcement miners in the network, they also provide announcements to the block miners. As you scale up the amount of bandwidth in the pool, you will need to add more Ann handlers. Block Miner (one or more) - These nodes download announcements from the announcement handlers and use them in the mining process to mine blocks. Block Handlers (one or more) - These nodes receive \"block shares\" from the block miners and submit blocks if Paymaker (1) - This node receives updates from the Ann Handlers and Block Handlers and keeps track of who should be paid. The Paymaker sends configuration to the pktd node which is used by the Master in order to make the pool pay out the announcement and block miners","title":"Block Mining & Running a Pool"},{"location":"mining/#packetcrypt-data-flow","text":"\u2588 Orange: Announcements are sent from the Announcement miners to the Ann Handlers and then to the Block miners \u2588 Blue: Block shares are sent from block miners to Block Handler(s) \u2588 Purple: Winning blocks are submitted by the Block Handler(s) to pktd and the PKT network \u2588 Pink: Block Handlers and Ann Handlers inform Paymaker of work done by announcement and block miners \u2588 Green: Paymaker configures pktd instance to create blocks which pay the people who have been mining \u2588 Brown: Master gets block templates from pktd instance Black dotted line: All nodes request configuration and block templates from Master node","title":"PacketCrypt Data Flow"},{"location":"mining/#more-information-and-packetcrypt-pool-code","text":"The code and documentation for running a pool is available on the C / nodejs version of the PacketCrypt project, the new Rust version only contains Announcement Miner and Announcement Handlers.","title":"More Information and PacketCrypt Pool Code"},{"location":"mining/#announcement-difficulty","text":"PacketCrypt is designed in such a way that a mining pool can double its effective power by: Doubling the total block mining computation effort Doubling the total announcement mining computation effort, or Doubling the amount of bandwidth between announcement miners and the pool The way that a pool operator limits the amount of bandwidth flowing into the pool, to prevent overloading of the network, is by setting what is known as the announcement difficulty . The announcement difficulty for a pool specifies how much work must be done on an announcement in order for the announcement to be accepted and paid out by the pool. Announcement difficulty serves to slow down the announcement miners to protect the pool's network. In general, doubling the announcement difficulty will halve the amount of bandwidth used by the pool and will also halve the pool's overall mining power, with a limit that setting the announcement difficulty lower than 2 does not bring any additional value. To explain why it works like this, we need to examine the PacketCrypt algorithm rules and the in particular how the block mining software decides which announcements to use when attempting to mine a block.","title":"Announcement Difficulty"},{"location":"mining/#announcement-set-selection","text":"PacketCrypt algorithm allows block miners to perform less work if they are able to prove that they had a certain number of \"high value\" announcements in memory at the time of mining, the exact ratio of actual work a block miner must do to the amount of work the PKT blockchain requires is called the power multipler . For a block miner seeking to optimize their power multiplier, every announcement has a particular level of utility value which is based on the amount of work that was done by the announcement miner (announcement difficulty) and how old the announcement is. We call this the effective difficulty . The effective difficulty of an announcement starts off as the actual difficulty of the work done to mine it and then decreases by half every block-period until it is less than 1 and the announcement is no longer usable for mining. The block mining software selects a subset of announcements which which will give it the best power multiplier based on the PacketCrypt algorithm: power_multiplier = min(effective_difficulty) * ann_count ** 2 The min(effective_difficulty) is the effective difficulty of the \"least valuable\" announcement that is being mined with. Lets assume that announcement miners are providing a steady supply of 1000 announcements per block-period and all announcements have an initial announcement difficulty of 128. The block mining software can choose to mine with 1000 announcements at 128 effective difficulty, or with 2000 announcements at 64 effective difficulty, or with 3000 announcements at 32 effective difficulty and so on. The best choice is to use the previous three block periods which provides a power multiplier that is 225% higher than that of using just the most recent 1 period worth of announcements. This curve is the same no matter what difficulty we are starting with.","title":"Announcement Set Selection"},{"location":"mining/#optimal-difficulty-curve","text":"Knowing that the optimal announcement set is all of those announcements mined over the past 3 block periods, we can compute the overall power of a pool as the announcement difficulty is raised. At announcement difficulty 1, announcements cannot be used for more than 1 block, but if we imagine that the announcement mining community can produce 1000 announcements per block at difficulty 1 then we can reason that the power multiplier will be 1000 ** 2 or 1 million. At difficulty 2 we can expect the announcement miners will produce 500 announcements per block period but since 2 block periods can be used, the power multiplier is the same. At difficulty 4, the announcement miners will produce 250 announcements per block period and they will be valid for 3 block periods making the power multiplier 750 ** 2 or 562,500. From here, the power output of the power multiplier of the optimal announcement set halves for each doubling of the announcement difficulty, making the optimal difficulty 2 .","title":"Optimal Difficulty Curve"},{"location":"mining/#faq-for-ann-miners","text":"","title":"FAQ for ANN Miners"},{"location":"mining/#what-does-overflow-mean","text":"When the ann handler receives an announcement, it puts it into a queue, when the queue fills up it responds overflow immediately. The queue can become long, so you may receive \"operation timed out\" you're still being paid, when you receive \"overflow\" you are not being paid. Unfortunately, you may also receive \"operation timed out\" because the handler is unresponsive, it's not obvious which is the reason from looking at the logs. For example, what you will see in the AnnMiner Logs: 1618394538 INFO annmine.rs:519 467 Ke/s 28.56Mb/s overflow: [0, 0, 3072, 0] uploading: [0, 0, 17632, 0] accept/reject: [26932/0, 0/0, 4856/0, 796/0] - goodrate: [100%, 100%, 61%, 100%] 467 Ke/s 467 kilo-encryptions (thousands of encryptions) per second of mining power. 28.56Mb/s Total upload bandwidth (to all pools - combined) overflow: [0, 0, 3072, 0] Overflowed the internal queue of the ann miner, before it was even able to upload to the pool, one number for each pool you're mining to. 3072 Number of anns which are not uploaded to pool #3. uploading [0, 0, 17632, 0] Number of anns currently in-flight in active http requests, again 3rd pool is a problem, others are doing well (in this example). accept/reject [26932/0, 0/0, 4856/0, 796/0] Anns accepted/rejected by each pool, these numbers are based on the previous 10 seconds, pool #2 is giving a zero accepted which might be an issue, keep watching the next message 10 seconds later for another update. goodrate [100%, 100%, 61%, 100%] Goodrate = number of anns accepted divided by number of anns produced.","title":"What does overflow mean?"},{"location":"mining/pool_setup_guide/","text":"Setting up a Pool \u00b6 Expectations \u00b6 General knowledge of Linux General knowledge of git General knowledge of networking General knowledge of blockchain Access to at least 6 machines running Ubuntu 18.04 LTS or 20.04 LTS , to deploy the following services. Machine 1 : PKT node Machine 2 : Master, Paymaker & Blkhander Machine 3 : AnnHandler Machine 4 : AnnHandler Machine 5 : BlkMiner Machine 6 : BlkMiner Note: It can be done all on a single machine, you just need to pay attention to ports etc. As of June 2022, the network difficulty is high, and given that half of the work is done at pool premises, it's recommended to run at least a dozen BlkMiner machines, with a significant (768GB recommended) ammount of RAM. Block mining & running a pool \u00b6 Starting your own pool requires setting up a number of services: pktd node (one or more) - One pktd instance is required for the Master to function, each of the Block Handlers may optionally use separate pktd nodes. Master (one) - This node coordinates all of the others and provides work files and configuration Ann Handler (two or more) - These are nodes which accept announcements from the announcement miners in the network, they also provide announcements to the block miners. As you scale up the amount of bandwidth in the pool, you will need to add more Ann handlers. Block Miner (two or more) - These high performance nodes download announcements from the announcement handlers and use them in the mining process to mine blocks. Block Handlers (one or more) - These nodes receive \"block shares\" from the block miners and submit blocks if they validate the share Paymaker (one) - This node receives updates from the Ann Handlers and Block Handlers and keeps track of who should be paid. The Paymaker sends configuration to the pktd node which is used by the Master in order to make the pool pay out the announcement and block miners General Information \u00b6 Repository Information: \u00b6 The following repositories hold the required programs to run a pool: Repository Tools packetcrypt_rs: https://github.com/cjdelisle/packetcrypt_rs AnnHandler, Blkminer, AnnMiner PacketCrypt: https://github.com/cjdelisle/PacketCrypt/ Master, Paymaker, BlkHandler pktd: https://github.com/pkt-cash/pktd pktd Assumed network Ranges: \u00b6 In this guide we have two separate networks, the public network (198.51.100.0/24), and local network (10.0.16.0/24) to connect AnnHandlers and BlkMiner. Machine Public Network IP Private Network IP Machine 1 198.51.100.1 10.0.16.1 Machine 2 198.51.100.2 10.0.16.2 Machine 3 198.51.100.3 10.0.16.3 Machine 4 198.51.100.4 10.0.16.4 Machine 5 X 10.0.16.5 Machine 6 X 10.0.16.6 Assumed Port Ranges: \u00b6 Service Machine Port/Port Ranges Master Machine 2 8080 Paymaker Machine 2 8081 BlkHandlers Machine 2 8100-8200 AnnHandlers Machine 3 & 4 80 Installation \u00b6 Machine 1 \u00b6 PKTD node: \u00b6 150GB of storage is required at a minimum to run the pktd node. Recommended size is around 250GB of NVMe storage. Install Golang sudo add-apt-repository ppa:longsleep/golang-backports sudo apt update sudo apt install golang-go Install git sudo apt install git Install the pktd node git clone --branch develop https://github.com/pkt-cash/pktd cd pktd ./do The output should show the following: Everything looks good - use ./bin/pktd to launch Machine 2 \u00b6 Master | Paymaker | BlkHandler: \u00b6 Install the required tools: cd ~ sudo add-apt-repository universe sudo apt install git sudo apt install make sudo apt install npm sudo npm cache clean -f sudo npm install -g n sudo n stable Restart your shell ### Add here how to get latest stable version of node Clone the source code: git clone --branch master https://github.com/cjdelisle/PacketCrypt Build the PacketCrypt code cd PacketCrypt npm install Machine 4 - 6 \u00b6 BlkMiner | AnnHandler | AnnMiner: \u00b6 Install the Required tools: sudo apt install gcc git sudo apt install curl curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh Clone packetcrypt_rs git clone --branch develop https://github.com/cjdelisle/packetcrypt_rs Compile PacketCrypt cd packetcrypt_rs ~/.cargo/bin/cargo build --release --features jemalloc Config of pool.js \u00b6 Information: pool.js is located at: ~/PacketCrypt/pool.example.js You need to edit this file, then run: cp ~/PacketCrypt/pool.example.js ~/PacketCrypt/pool.js config.privateSeed \u00b6 Signing of announcements is rarely used, it breaks people mining into multiple pools, and you should set it to null unless \"you know what you're doing\" This seed is used for deriving keys which will be used for signing announcements. Setting this value to an alphanumeric value e.g oHk8TXpbtRRZGtaYYMnIFAzYMrVh6vA8XzKWWXcKbzCThuFLIJ234bHN5peddQFzR2TtQyo58gcFRP7bKg9BeXZirSqp9gVpjBWp In general, this value should be set to the null, as signing announcements is rarely used, and breaks Announcement mining with multiple pools if you have your pool externally accessable, and should only be set if you have a strong understanding and knowledge of what you are doing. config.privateSeed = null If you aren't bothered by, or don't require your announcements to be signed . config.paymakerHttpPasswd \u00b6 Anyone who has this password can make http posts to the paymaker (claim that shares were won) You should make this random and also firewall the paymaker from the public. The upload will be done using Authorization Basic with a username of \"x\" and this as the password config.paymakerHttpPasswd = 'anyone with this password can post results to the paymaker'; You can put the paymaker behind an http proxy if you wish. config.masterUrl \u00b6 This is used by the paymaker and block handler when running them with pool.js, it is used to resolve where the master is. You can either set this as a locally host or put your master behind a nginx proxy config.masterUrl = 'http://localhost:8080'; or if you have your instance public, and you want to have it be resolvable publically, replace the url with your own. config.masterUrl = 'http://pool.pktpool.io'; config.rpc \u00b6 The username and password set here, should be the same username and password used at the end of this guide for when you configure the pktd service. user: 'x', pass: 'x', config.annHandlers \u00b6 Information: config.annHandlers is a list of json object, with an object for each individual annhandler you would like to run, each ann handler will require it's own individual port. As the AnnHandler will be run on the same machine as the BlkMiner you need to make sure there are no over-lapping port bindings. If you plan to allow external AnnMiners (AnnMiners not on your LAN to mine against your pool, the url's placed in the AnnHandlers list, should be externally resolvable. The address that is advertized for accessing this ann handler (external address) If running locally use: url: 'http://10.0.16.3:8081','http://10.0.16.4:8081' If allowing external annminers use a resolved address such as: url: 'http://ann1.pktpool.io','http://ann2.pktpool.io' Replace the url with your own. config.blkHandlers \u00b6 Information: config.blkHandlers is a list of json object, with an object for each individual annhandler you would like to run, each ann handler will require it's own individual port. BlockHandlers are low-effort high-volume single-threaded workers. What address should be advertized for accessing this BlkHander, again make sure there are no overlapping ports. If you are wanting to support external blockminers, this address should be externally resolvable url: 'http://localhost:8100', This is the port that the blkHandler will bind to. port: 8082, This is the host that the blkHandler will bind to. host: '::', This is how many requests a blkHandler can queue before the handler starts rejecting requests maxConnections: 50, root: config config.master \u00b6 Which port to run the master on port: 8080, What address to bind to, set to localhost if proxying host: '::', Minimum work for an announcement. This number is effectively a bandwidth divisor, every time you double this number you will reduce your bandwidth by a factor of two. annMinWork: Util.annWorkToTarget(128), Average number of shares per block, reducing this number will reduce load on your block handlers, but increasing it will allow payment to be spread more evenly between block miners. This wants to be set to a higher number than one, for the purpose of constantly testing that the block miners are making valid shares. You may have a block miner sitting for hours without a share and then when it wins one, it can become invalid because of misconfiguration shareWorkDivisor: 4, Which versions of announcements we will accept annVersions: [1], Request that ann miners mine announcements that are this many blocks old. Announcements contain a commitment of the most recent block hash but they need 3 blocks to \"mature\" before they can be used The point of this is so that PacketCrypt is about bandwidth, not latency. But there is a risk: If there is a surge then you are going to be starved for announcements When you are starved, you will have few usable anns which causes a slow-down in mining and the announcements which are being submitted are not usable. When you win a few blocks, those announcements become usable and you surge, which causes you to go back into starvation again. This should be set to either: 0 Which means the announcements you are receiving are used instantly 3 Which means you are waiting for the announcements to mature before using them. If running your own AnnMiners, it is advisable to set this to 0, and add the --mineold 3 to some of your AnnMiner startups on the CLI. This helps to keep a balance between keeping your pool as powerful as possible, along with having AnnMiners to help out in the case of a starvation mineOldAnns: 0, config.payMaker \u00b6 How the miners should access the paymaker (external address), replace the url with your own. url: 'pool.pktpool.io', Which port to run the paymaker on port: 8081, What address to bind to, set to localhost if proxying host: '::', Seconds between sending updates to pktd. If this set to zero, the payMaker will accept log uploads but will not send any changes of payout data to pktd. updateCycle: 120, updateCycle: 0 to disable How many seconds backward to keep history in memory historyDepth: 60 * 60 * 24 * 30, Maximum number of simultanious connections to accept before sending 500 errors maxConnections: 200, annCompressor \u00b6 Store data in 1 minute aggregations timespanMs: 1000 * 60, Allow data to be submitted to any of the last 10 aggregations slotsToKeepEvents: 10, What fraction of the payout to pay to block miners (the rest will be paid to ann miners) ( Pay per last N shares ) blockPayoutFraction: 0.5, What percent of the total winnings should be taken for pool management poolFee: 0.40, The address which should be paid the pool fee poolFeeAddress: \"pkt1qyc9dkhca7uc84zn3vlgd0h0fxr3twwn34qgeqe\", This constant will affect how far back into history we pay our announcement miners ( Pay per last N shares ) pplnsAnnConstantX: 0.125, This constant will affect how far back into history we pay our block miners ( Pay per last N shares ) pplnsBlkConstantX: 2, When there are not enough shares to fairly spread out the winnings, pay what is left over to this address. defaultAddress: \"pkt1q6hqsqhqdgqfd8t3xwgceulu7k9d9w5t2amath0qxyfjlvl3s3u4sjza2g2\", When something goes wrong, direct pktd to send all coins here, if this is different from the defaultAddress then it is possible to account for and pay out to the miners later when the problem is fixed. errorAddress: \"pkt1q6hqsqhqdgqfd8t3xwgceulu7k9d9w5t2amath0qxyfjlvl3s3u4sjza2g2\", Config of pool.toml \u00b6 Information: - pool.example.toml is located at: ~/packetcrypt_rs/pool.example.toml - You need to edit this file, then run: ~/packetcrypt_rs/pool.example.toml ~/packetcrypt_rs/pool.toml Password used by your paymaker to post logs for payment, the same as config.paymakerHttpPasswd paymaker_http_password = \"you'll want this to be a secret\" URL of the pool master, used for getting configuration and work, the same as: Replace the url with your own. master_url = \"http://pool.pktpool.io\" ann_handler.ah* \u00b6 You can have multiple ann_handlers, you can do this by defining each one such as: [ann_handler.ah0] \"parameters\" [ann_handler.ah1] \"parameters\" These can all be in a single file to be used by each annhandler, when starting the annhandlers, you would start them with on each respective machine: packetcrypt ah --config /path/to/config.toml ah0 packetcrypt ah --config /path/to/config.toml ah1 Number of threads to dedicate to the AnnHandler num_workers = 8 Length of the input queue, keeping this low will create back-pressure and prevent miners from posting too many announcements when the server is in fact overloaded input_queue_len = 256 The public url of the annhandler, this should match what is set in your pool.js Replace the url with your own. public_url = \"http://ann1.pktpool.io/submit\" Bind to this port bind_port = \"198.51.100.3:80\" Bind this port to the sprayer component bind_pvt = \"10.0.16.3:6666\" Set sprayer spray_at = [\"239.0.1.1:6667\"] spray_workers = 8 For Machine 3 you should end up with something like this [ann_handler.ah0] block_miner_passwd = \"no one steals my anns\" skip_check_chance = 0 num_workers = 8 input_queue_len = 512 public_url = \"http://ann1.pktpool.io/submit\" bind_pub = \"198.51.100.3:80\" bind_pvt = \"10.0.16.3:6666\" spray_at = [\"239.0.1.1:6667\"] spray_workers = 8 subscribe_to = [] files_to_keep = 512 The same logic should be followed for Machine 4 and other handlers you may have. NOTE: To bind low ports with non-root user run: \u00b6 sudo setcap CAP_NET_BIND_SERVICE=+eip $(which packetcrypt) Running Manually \u00b6 Machine 1 \u00b6 Information: These tasks need to be run in the order they are presented PKTD needs to have downloaded the full chain first, you will know when the node is upto date when height is equal to the current block on the explorer It can take 12+ hours to fully sync to the current block height PKTD \u00b6 --rpcuser and --rpcpass should match the values set in pool.js under config.rpc ./pktd/bin/pktd --rpcuser=XXX --rpcpass=XXX --miningaddr Machine 2 \u00b6 Master \u00b6 node ./pool.js --master Paymaker \u00b6 node ./pool.js --payMaker BlkHandler(s) \u00b6 Launch the BlkHandler nodes, specify --blk0 for the first BlkHandler , --blk1 for the second, and so forth cd PacketCrypt node ./pool.js --blk0 node ./pool.js --blk1 Machine 3 \u00b6 AnnHandler \u00b6 cd packetcrypt_rs ./target/release/packetcrypt ah --config /path/to/pool.toml ah0 Machine 4 \u00b6 AnnHandler \u00b6 cd packetcrypt_rs ./targer/release/packetcrypt ah --config /path/to/pool.toml ah1 Machine 5 and 6 \u00b6 BlkMiner \u00b6 --threads is the number of threads you want to dedicate to the Blkminer, the default is to use all available threads. --paymentaddr is the wallet you want your coins to be mined into, it is advisable to not use the electrum wallet for this. --memorysizemb is how much RAM you are allocating to block mining, Ideally you want to set as much as you can. is the masterUrl of your pool cd packetcrypt_rs ./target/release/packetcrypt blk --paymentaddr --threads 80 --memorysizemb 665000 --handlerpass NoOneStealsMyAnns --subscribe 10.0.16.3:6666 --bind 0.0.0.0:6667 --mcast 239.0.1.1 NGINX Setup (For allowing external AnnMining) \u00b6 Machine 2 \u00b6 Update system and install Nginx sudo apt update sudo apt install nginx Unlink default nginx site unlink /etc/nginx/sites-enabled/default cd /etc/nginx/sites-available Create and edit the reverse-proxy.conf file vim reverse-proxy.conf The config for the services: server { listen 80; listen [::]:80; server_name ; location / { proxy_pass http://localhost:8080/; } } server { listen 80; listen [::]:80; server_name paymaker.pktpool.io; location / { proxy_pass http://localhost:8081/; } } Link new file to sites-enabled ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/reverse-proxy.conf Remove default config rm default Check reverse proxy config is correct nginx -t Reload nginx to pick up config changes. sudo systemctl reload nginx","title":"Setting up a Pool"},{"location":"mining/pool_setup_guide/#setting-up-a-pool","text":"","title":"Setting up a Pool"},{"location":"mining/pool_setup_guide/#expectations","text":"General knowledge of Linux General knowledge of git General knowledge of networking General knowledge of blockchain Access to at least 6 machines running Ubuntu 18.04 LTS or 20.04 LTS , to deploy the following services. Machine 1 : PKT node Machine 2 : Master, Paymaker & Blkhander Machine 3 : AnnHandler Machine 4 : AnnHandler Machine 5 : BlkMiner Machine 6 : BlkMiner Note: It can be done all on a single machine, you just need to pay attention to ports etc. As of June 2022, the network difficulty is high, and given that half of the work is done at pool premises, it's recommended to run at least a dozen BlkMiner machines, with a significant (768GB recommended) ammount of RAM.","title":"Expectations"},{"location":"mining/pool_setup_guide/#block-mining-running-a-pool","text":"Starting your own pool requires setting up a number of services: pktd node (one or more) - One pktd instance is required for the Master to function, each of the Block Handlers may optionally use separate pktd nodes. Master (one) - This node coordinates all of the others and provides work files and configuration Ann Handler (two or more) - These are nodes which accept announcements from the announcement miners in the network, they also provide announcements to the block miners. As you scale up the amount of bandwidth in the pool, you will need to add more Ann handlers. Block Miner (two or more) - These high performance nodes download announcements from the announcement handlers and use them in the mining process to mine blocks. Block Handlers (one or more) - These nodes receive \"block shares\" from the block miners and submit blocks if they validate the share Paymaker (one) - This node receives updates from the Ann Handlers and Block Handlers and keeps track of who should be paid. The Paymaker sends configuration to the pktd node which is used by the Master in order to make the pool pay out the announcement and block miners","title":"Block mining & running a pool"},{"location":"mining/pool_setup_guide/#general-information","text":"","title":"General Information"},{"location":"mining/pool_setup_guide/#repository-information","text":"The following repositories hold the required programs to run a pool: Repository Tools packetcrypt_rs: https://github.com/cjdelisle/packetcrypt_rs AnnHandler, Blkminer, AnnMiner PacketCrypt: https://github.com/cjdelisle/PacketCrypt/ Master, Paymaker, BlkHandler pktd: https://github.com/pkt-cash/pktd pktd","title":"Repository Information:"},{"location":"mining/pool_setup_guide/#assumed-network-ranges","text":"In this guide we have two separate networks, the public network (198.51.100.0/24), and local network (10.0.16.0/24) to connect AnnHandlers and BlkMiner. Machine Public Network IP Private Network IP Machine 1 198.51.100.1 10.0.16.1 Machine 2 198.51.100.2 10.0.16.2 Machine 3 198.51.100.3 10.0.16.3 Machine 4 198.51.100.4 10.0.16.4 Machine 5 X 10.0.16.5 Machine 6 X 10.0.16.6","title":"Assumed network Ranges:"},{"location":"mining/pool_setup_guide/#assumed-port-ranges","text":"Service Machine Port/Port Ranges Master Machine 2 8080 Paymaker Machine 2 8081 BlkHandlers Machine 2 8100-8200 AnnHandlers Machine 3 & 4 80","title":"Assumed Port Ranges:"},{"location":"mining/pool_setup_guide/#installation","text":"","title":"Installation"},{"location":"mining/pool_setup_guide/#machine-1","text":"","title":"Machine 1"},{"location":"mining/pool_setup_guide/#pktd-node","text":"150GB of storage is required at a minimum to run the pktd node. Recommended size is around 250GB of NVMe storage. Install Golang sudo add-apt-repository ppa:longsleep/golang-backports sudo apt update sudo apt install golang-go Install git sudo apt install git Install the pktd node git clone --branch develop https://github.com/pkt-cash/pktd cd pktd ./do The output should show the following: Everything looks good - use ./bin/pktd to launch","title":"PKTD node:"},{"location":"mining/pool_setup_guide/#machine-2","text":"","title":"Machine 2"},{"location":"mining/pool_setup_guide/#master-paymaker-blkhandler","text":"Install the required tools: cd ~ sudo add-apt-repository universe sudo apt install git sudo apt install make sudo apt install npm sudo npm cache clean -f sudo npm install -g n sudo n stable Restart your shell ### Add here how to get latest stable version of node Clone the source code: git clone --branch master https://github.com/cjdelisle/PacketCrypt Build the PacketCrypt code cd PacketCrypt npm install","title":"Master | Paymaker | BlkHandler:"},{"location":"mining/pool_setup_guide/#machine-4-6","text":"","title":"Machine 4 - 6"},{"location":"mining/pool_setup_guide/#blkminer-annhandler-annminer","text":"Install the Required tools: sudo apt install gcc git sudo apt install curl curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh Clone packetcrypt_rs git clone --branch develop https://github.com/cjdelisle/packetcrypt_rs Compile PacketCrypt cd packetcrypt_rs ~/.cargo/bin/cargo build --release --features jemalloc","title":"BlkMiner | AnnHandler | AnnMiner:"},{"location":"mining/pool_setup_guide/#config-of-pooljs","text":"Information: pool.js is located at: ~/PacketCrypt/pool.example.js You need to edit this file, then run: cp ~/PacketCrypt/pool.example.js ~/PacketCrypt/pool.js","title":"Config of pool.js"},{"location":"mining/pool_setup_guide/#configprivateseed","text":"Signing of announcements is rarely used, it breaks people mining into multiple pools, and you should set it to null unless \"you know what you're doing\" This seed is used for deriving keys which will be used for signing announcements. Setting this value to an alphanumeric value e.g oHk8TXpbtRRZGtaYYMnIFAzYMrVh6vA8XzKWWXcKbzCThuFLIJ234bHN5peddQFzR2TtQyo58gcFRP7bKg9BeXZirSqp9gVpjBWp In general, this value should be set to the null, as signing announcements is rarely used, and breaks Announcement mining with multiple pools if you have your pool externally accessable, and should only be set if you have a strong understanding and knowledge of what you are doing. config.privateSeed = null If you aren't bothered by, or don't require your announcements to be signed .","title":"config.privateSeed"},{"location":"mining/pool_setup_guide/#configpaymakerhttppasswd","text":"Anyone who has this password can make http posts to the paymaker (claim that shares were won) You should make this random and also firewall the paymaker from the public. The upload will be done using Authorization Basic with a username of \"x\" and this as the password config.paymakerHttpPasswd = 'anyone with this password can post results to the paymaker'; You can put the paymaker behind an http proxy if you wish.","title":"config.paymakerHttpPasswd"},{"location":"mining/pool_setup_guide/#configmasterurl","text":"This is used by the paymaker and block handler when running them with pool.js, it is used to resolve where the master is. You can either set this as a locally host or put your master behind a nginx proxy config.masterUrl = 'http://localhost:8080'; or if you have your instance public, and you want to have it be resolvable publically, replace the url with your own. config.masterUrl = 'http://pool.pktpool.io';","title":"config.masterUrl"},{"location":"mining/pool_setup_guide/#configrpc","text":"The username and password set here, should be the same username and password used at the end of this guide for when you configure the pktd service. user: 'x', pass: 'x',","title":"config.rpc"},{"location":"mining/pool_setup_guide/#configannhandlers","text":"Information: config.annHandlers is a list of json object, with an object for each individual annhandler you would like to run, each ann handler will require it's own individual port. As the AnnHandler will be run on the same machine as the BlkMiner you need to make sure there are no over-lapping port bindings. If you plan to allow external AnnMiners (AnnMiners not on your LAN to mine against your pool, the url's placed in the AnnHandlers list, should be externally resolvable. The address that is advertized for accessing this ann handler (external address) If running locally use: url: 'http://10.0.16.3:8081','http://10.0.16.4:8081' If allowing external annminers use a resolved address such as: url: 'http://ann1.pktpool.io','http://ann2.pktpool.io' Replace the url with your own.","title":"config.annHandlers"},{"location":"mining/pool_setup_guide/#configblkhandlers","text":"Information: config.blkHandlers is a list of json object, with an object for each individual annhandler you would like to run, each ann handler will require it's own individual port. BlockHandlers are low-effort high-volume single-threaded workers. What address should be advertized for accessing this BlkHander, again make sure there are no overlapping ports. If you are wanting to support external blockminers, this address should be externally resolvable url: 'http://localhost:8100', This is the port that the blkHandler will bind to. port: 8082, This is the host that the blkHandler will bind to. host: '::', This is how many requests a blkHandler can queue before the handler starts rejecting requests maxConnections: 50, root: config","title":"config.blkHandlers"},{"location":"mining/pool_setup_guide/#configmaster","text":"Which port to run the master on port: 8080, What address to bind to, set to localhost if proxying host: '::', Minimum work for an announcement. This number is effectively a bandwidth divisor, every time you double this number you will reduce your bandwidth by a factor of two. annMinWork: Util.annWorkToTarget(128), Average number of shares per block, reducing this number will reduce load on your block handlers, but increasing it will allow payment to be spread more evenly between block miners. This wants to be set to a higher number than one, for the purpose of constantly testing that the block miners are making valid shares. You may have a block miner sitting for hours without a share and then when it wins one, it can become invalid because of misconfiguration shareWorkDivisor: 4, Which versions of announcements we will accept annVersions: [1], Request that ann miners mine announcements that are this many blocks old. Announcements contain a commitment of the most recent block hash but they need 3 blocks to \"mature\" before they can be used The point of this is so that PacketCrypt is about bandwidth, not latency. But there is a risk: If there is a surge then you are going to be starved for announcements When you are starved, you will have few usable anns which causes a slow-down in mining and the announcements which are being submitted are not usable. When you win a few blocks, those announcements become usable and you surge, which causes you to go back into starvation again. This should be set to either: 0 Which means the announcements you are receiving are used instantly 3 Which means you are waiting for the announcements to mature before using them. If running your own AnnMiners, it is advisable to set this to 0, and add the --mineold 3 to some of your AnnMiner startups on the CLI. This helps to keep a balance between keeping your pool as powerful as possible, along with having AnnMiners to help out in the case of a starvation mineOldAnns: 0,","title":"config.master"},{"location":"mining/pool_setup_guide/#configpaymaker","text":"How the miners should access the paymaker (external address), replace the url with your own. url: 'pool.pktpool.io', Which port to run the paymaker on port: 8081, What address to bind to, set to localhost if proxying host: '::', Seconds between sending updates to pktd. If this set to zero, the payMaker will accept log uploads but will not send any changes of payout data to pktd. updateCycle: 120, updateCycle: 0 to disable How many seconds backward to keep history in memory historyDepth: 60 * 60 * 24 * 30, Maximum number of simultanious connections to accept before sending 500 errors maxConnections: 200,","title":"config.payMaker"},{"location":"mining/pool_setup_guide/#anncompressor","text":"Store data in 1 minute aggregations timespanMs: 1000 * 60, Allow data to be submitted to any of the last 10 aggregations slotsToKeepEvents: 10, What fraction of the payout to pay to block miners (the rest will be paid to ann miners) ( Pay per last N shares ) blockPayoutFraction: 0.5, What percent of the total winnings should be taken for pool management poolFee: 0.40, The address which should be paid the pool fee poolFeeAddress: \"pkt1qyc9dkhca7uc84zn3vlgd0h0fxr3twwn34qgeqe\", This constant will affect how far back into history we pay our announcement miners ( Pay per last N shares ) pplnsAnnConstantX: 0.125, This constant will affect how far back into history we pay our block miners ( Pay per last N shares ) pplnsBlkConstantX: 2, When there are not enough shares to fairly spread out the winnings, pay what is left over to this address. defaultAddress: \"pkt1q6hqsqhqdgqfd8t3xwgceulu7k9d9w5t2amath0qxyfjlvl3s3u4sjza2g2\", When something goes wrong, direct pktd to send all coins here, if this is different from the defaultAddress then it is possible to account for and pay out to the miners later when the problem is fixed. errorAddress: \"pkt1q6hqsqhqdgqfd8t3xwgceulu7k9d9w5t2amath0qxyfjlvl3s3u4sjza2g2\",","title":"annCompressor"},{"location":"mining/pool_setup_guide/#config-of-pooltoml","text":"Information: - pool.example.toml is located at: ~/packetcrypt_rs/pool.example.toml - You need to edit this file, then run: ~/packetcrypt_rs/pool.example.toml ~/packetcrypt_rs/pool.toml Password used by your paymaker to post logs for payment, the same as config.paymakerHttpPasswd paymaker_http_password = \"you'll want this to be a secret\" URL of the pool master, used for getting configuration and work, the same as: Replace the url with your own. master_url = \"http://pool.pktpool.io\"","title":"Config of pool.toml"},{"location":"mining/pool_setup_guide/#ann_handlerah","text":"You can have multiple ann_handlers, you can do this by defining each one such as: [ann_handler.ah0] \"parameters\" [ann_handler.ah1] \"parameters\" These can all be in a single file to be used by each annhandler, when starting the annhandlers, you would start them with on each respective machine: packetcrypt ah --config /path/to/config.toml ah0 packetcrypt ah --config /path/to/config.toml ah1 Number of threads to dedicate to the AnnHandler num_workers = 8 Length of the input queue, keeping this low will create back-pressure and prevent miners from posting too many announcements when the server is in fact overloaded input_queue_len = 256 The public url of the annhandler, this should match what is set in your pool.js Replace the url with your own. public_url = \"http://ann1.pktpool.io/submit\" Bind to this port bind_port = \"198.51.100.3:80\" Bind this port to the sprayer component bind_pvt = \"10.0.16.3:6666\" Set sprayer spray_at = [\"239.0.1.1:6667\"] spray_workers = 8 For Machine 3 you should end up with something like this [ann_handler.ah0] block_miner_passwd = \"no one steals my anns\" skip_check_chance = 0 num_workers = 8 input_queue_len = 512 public_url = \"http://ann1.pktpool.io/submit\" bind_pub = \"198.51.100.3:80\" bind_pvt = \"10.0.16.3:6666\" spray_at = [\"239.0.1.1:6667\"] spray_workers = 8 subscribe_to = [] files_to_keep = 512 The same logic should be followed for Machine 4 and other handlers you may have.","title":"ann_handler.ah*"},{"location":"mining/pool_setup_guide/#note-to-bind-low-ports-with-non-root-user-run","text":"sudo setcap CAP_NET_BIND_SERVICE=+eip $(which packetcrypt)","title":"NOTE: To bind low ports with non-root user run:"},{"location":"mining/pool_setup_guide/#running-manually","text":"","title":"Running Manually"},{"location":"mining/pool_setup_guide/#machine-1_1","text":"Information: These tasks need to be run in the order they are presented PKTD needs to have downloaded the full chain first, you will know when the node is upto date when height is equal to the current block on the explorer It can take 12+ hours to fully sync to the current block height","title":"Machine 1"},{"location":"mining/pool_setup_guide/#pktd","text":"--rpcuser and --rpcpass should match the values set in pool.js under config.rpc ./pktd/bin/pktd --rpcuser=XXX --rpcpass=XXX --miningaddr ","title":"PKTD"},{"location":"mining/pool_setup_guide/#machine-2_1","text":"","title":"Machine 2"},{"location":"mining/pool_setup_guide/#master","text":"node ./pool.js --master","title":"Master"},{"location":"mining/pool_setup_guide/#paymaker","text":"node ./pool.js --payMaker","title":"Paymaker"},{"location":"mining/pool_setup_guide/#blkhandlers","text":"Launch the BlkHandler nodes, specify --blk0 for the first BlkHandler , --blk1 for the second, and so forth cd PacketCrypt node ./pool.js --blk0 node ./pool.js --blk1","title":"BlkHandler(s)"},{"location":"mining/pool_setup_guide/#machine-3","text":"","title":"Machine 3"},{"location":"mining/pool_setup_guide/#annhandler","text":"cd packetcrypt_rs ./target/release/packetcrypt ah --config /path/to/pool.toml ah0","title":"AnnHandler"},{"location":"mining/pool_setup_guide/#machine-4","text":"","title":"Machine 4"},{"location":"mining/pool_setup_guide/#annhandler_1","text":"cd packetcrypt_rs ./targer/release/packetcrypt ah --config /path/to/pool.toml ah1","title":"AnnHandler"},{"location":"mining/pool_setup_guide/#machine-5-and-6","text":"","title":"Machine 5 and 6"},{"location":"mining/pool_setup_guide/#blkminer","text":"--threads is the number of threads you want to dedicate to the Blkminer, the default is to use all available threads. --paymentaddr is the wallet you want your coins to be mined into, it is advisable to not use the electrum wallet for this. --memorysizemb is how much RAM you are allocating to block mining, Ideally you want to set as much as you can. is the masterUrl of your pool cd packetcrypt_rs ./target/release/packetcrypt blk --paymentaddr --threads 80 --memorysizemb 665000 --handlerpass NoOneStealsMyAnns --subscribe 10.0.16.3:6666 --bind 0.0.0.0:6667 --mcast 239.0.1.1","title":"BlkMiner"},{"location":"mining/pool_setup_guide/#nginx-setup-for-allowing-external-annmining","text":"","title":"NGINX Setup (For allowing external AnnMining)"},{"location":"mining/pool_setup_guide/#machine-2_2","text":"Update system and install Nginx sudo apt update sudo apt install nginx Unlink default nginx site unlink /etc/nginx/sites-enabled/default cd /etc/nginx/sites-available Create and edit the reverse-proxy.conf file vim reverse-proxy.conf The config for the services: server { listen 80; listen [::]:80; server_name ; location / { proxy_pass http://localhost:8080/; } } server { listen 80; listen [::]:80; server_name paymaker.pktpool.io; location / { proxy_pass http://localhost:8081/; } } Link new file to sites-enabled ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/reverse-proxy.conf Remove default config rm default Check reverse proxy config is correct nginx -t Reload nginx to pick up config changes. sudo systemctl reload nginx","title":"Machine 2"},{"location":"pktd/","text":"Pktd \u00b6 Pktd is the PKT full node blockchain software. It is a fork of btcd, the golang bitcoin instance. Running a full node \u00b6 If you want to run a full node in the PKT network, you can do so by downloading pktd and compiling it on a Linux or Mac server. Follow the process in Installation and the simply type ./bin/pktd and it will start up and begin syncing the chain and helping verify the PKT network. NOTE : Running a full node requires over 40 GB of disk space to store the blockchain and is not necessary for participating in the project. If you just want to make a wallet, see PKT Electrum (gui) or PKTWallet (command line) wallets. Installation \u00b6 Install golang \u00b6 First, you need to install the go programming language, go to the golang website and learn how to install it on your system: https://golang.org/doc/install Install git \u00b6 Next you will need to make sure you have git installed. The first thing to do is check whether you have it installed already: git version If it prints something like git version 2.21.1 you\u2019re in luck and you can continue. If it prints something more like command not found: git then you\u2019ll need to install it. Installation will depend on your system, for debian/ubuntu like systems you will want sudo apt install git and for OSX with homebrew, you\u2019ll want brew install git . Install the components \u00b6 Once you have golang and git fully installed and set up, you can use the following commands to install pktd, pktwallet and pktctl. git clone https://github.com/pkt-cash/pktd cd pktd ./do If you see something like: Everything looks good at the end of typing ./do then you should be ready to start using pktd.","title":"Pktd"},{"location":"pktd/#pktd","text":"Pktd is the PKT full node blockchain software. It is a fork of btcd, the golang bitcoin instance.","title":"Pktd"},{"location":"pktd/#running-a-full-node","text":"If you want to run a full node in the PKT network, you can do so by downloading pktd and compiling it on a Linux or Mac server. Follow the process in Installation and the simply type ./bin/pktd and it will start up and begin syncing the chain and helping verify the PKT network. NOTE : Running a full node requires over 40 GB of disk space to store the blockchain and is not necessary for participating in the project. If you just want to make a wallet, see PKT Electrum (gui) or PKTWallet (command line) wallets.","title":"Running a full node"},{"location":"pktd/#installation","text":"","title":"Installation"},{"location":"pktd/#install-golang","text":"First, you need to install the go programming language, go to the golang website and learn how to install it on your system: https://golang.org/doc/install","title":"Install golang"},{"location":"pktd/#install-git","text":"Next you will need to make sure you have git installed. The first thing to do is check whether you have it installed already: git version If it prints something like git version 2.21.1 you\u2019re in luck and you can continue. If it prints something more like command not found: git then you\u2019ll need to install it. Installation will depend on your system, for debian/ubuntu like systems you will want sudo apt install git and for OSX with homebrew, you\u2019ll want brew install git .","title":"Install git"},{"location":"pktd/#install-the-components","text":"Once you have golang and git fully installed and set up, you can use the following commands to install pktd, pktwallet and pktctl. git clone https://github.com/pkt-cash/pktd cd pktd ./do If you see something like: Everything looks good at the end of typing ./do then you should be ready to start using pktd.","title":"Install the components"},{"location":"pktd/migrating_from_electrum/","text":"Migrating from Electrum to PKTWallet \u00b6 If you have an electrum based wallet which becomes overloaded from too many transactions (e.g. from mining directly into it), then you will need to migrate your keys to a pktwallet instance. Step 1: Setup pktwallet \u00b6 Follow the instructions in pktwallet to get your wallet up and running Step 2: Export your keys \u00b6 In Electrum, click Wallet -> Private Keys -> Export You will be prompted to enter your Electrum wallet password, then a window should appear showing your keys KEEP THESE KEYS SECRET Find an address which you want to migrate and copy the key with that address Do not copy the part which says p2wpkh: , just the letters after it The key will look sometihng like this: ci2TBp2HTWtyMQtizWMuugHxG6lNpInA1bSpLIWzjJS2AI8ObwV5 Step 3: Import key to pktwallet \u00b6 In a terminal window, run pktctl --wallet getbalance to verify that your wallet is working Unlock your wallet using pktctl --wallet walletpassphrase 1000000 Type pktctl --wallet importprivkey You should see the address printed on the screen Importing more keys \u00b6 When you import a key, it starts a rescan of the chain automatically, in order to import more you need to stop pktctl --wallet stopresync to stop Speed things up \u00b6 If you know exactly when an address was paid, you can speed up the import by only rescanning blocks where it might have been paid. For example if you are sure that the address was not paid earlier than block number 600000 you can do the following: pktctl --wallet stopresync pktctl --wallet resync 600000 100000000 Check that it's working \u00b6 It's recommended that you run pktwallet with -d debug flag in order to be able to see the debug logs. When you are resyncing you should see log lines like the following: 1609188780 [DBG] wallet.go:2817 Rescan cycle [620100] 1609188781 [DBG] wallet.go:2817 Rescan cycle [620200] 1609188782 [DBG] wallet.go:2817 Rescan cycle [620300] 1609188783 [DBG] wallet.go:2817 Rescan cycle [620400] The number if the block number which is being scanned. Troubleshooting \u00b6 ErrBirthdayBlockNotSet: birthday block not set Your wallet is not synced yet, wait for it to become synced","title":"Migrating from Electrum to PKTWallet"},{"location":"pktd/migrating_from_electrum/#migrating-from-electrum-to-pktwallet","text":"If you have an electrum based wallet which becomes overloaded from too many transactions (e.g. from mining directly into it), then you will need to migrate your keys to a pktwallet instance.","title":"Migrating from Electrum to PKTWallet"},{"location":"pktd/migrating_from_electrum/#step-1-setup-pktwallet","text":"Follow the instructions in pktwallet to get your wallet up and running","title":"Step 1: Setup pktwallet"},{"location":"pktd/migrating_from_electrum/#step-2-export-your-keys","text":"In Electrum, click Wallet -> Private Keys -> Export You will be prompted to enter your Electrum wallet password, then a window should appear showing your keys KEEP THESE KEYS SECRET Find an address which you want to migrate and copy the key with that address Do not copy the part which says p2wpkh: , just the letters after it The key will look sometihng like this: ci2TBp2HTWtyMQtizWMuugHxG6lNpInA1bSpLIWzjJS2AI8ObwV5","title":"Step 2: Export your keys"},{"location":"pktd/migrating_from_electrum/#step-3-import-key-to-pktwallet","text":"In a terminal window, run pktctl --wallet getbalance to verify that your wallet is working Unlock your wallet using pktctl --wallet walletpassphrase 1000000 Type pktctl --wallet importprivkey You should see the address printed on the screen","title":"Step 3: Import key to pktwallet"},{"location":"pktd/migrating_from_electrum/#importing-more-keys","text":"When you import a key, it starts a rescan of the chain automatically, in order to import more you need to stop pktctl --wallet stopresync to stop","title":"Importing more keys"},{"location":"pktd/migrating_from_electrum/#speed-things-up","text":"If you know exactly when an address was paid, you can speed up the import by only rescanning blocks where it might have been paid. For example if you are sure that the address was not paid earlier than block number 600000 you can do the following: pktctl --wallet stopresync pktctl --wallet resync 600000 100000000","title":"Speed things up"},{"location":"pktd/migrating_from_electrum/#check-that-its-working","text":"It's recommended that you run pktwallet with -d debug flag in order to be able to see the debug logs. When you are resyncing you should see log lines like the following: 1609188780 [DBG] wallet.go:2817 Rescan cycle [620100] 1609188781 [DBG] wallet.go:2817 Rescan cycle [620200] 1609188782 [DBG] wallet.go:2817 Rescan cycle [620300] 1609188783 [DBG] wallet.go:2817 Rescan cycle [620400] The number if the block number which is being scanned.","title":"Check that it's working"},{"location":"pktd/migrating_from_electrum/#troubleshooting","text":"ErrBirthdayBlockNotSet: birthday block not set Your wallet is not synced yet, wait for it to become synced","title":"Troubleshooting"},{"location":"pktd/pktwallet/","text":"pktwallet \u00b6 The command line PKT wallet First Time Installation and Launching \u00b6 Download pktd \u00b6 Microsoft Windows \u00b6 Download the most recent zip archive suffixed with -windows.zip available from pktd releases page For example: pktd-v1.4.0-windows.zip Unarchive the content of the zip file Open the command prompt and navigate to the bin directory in the extracted archive For Example: cd Downloads\\pktd*\\bin Follow the instructions below but In place of ./bin/pktwallet , use pktwallet.exe In place of ./bin/pktctl , use pktctl.exe MacOS and Linux \u00b6 Download one of the most recent packages available for Linux or MacOS from pktd releases page For example, for pktd-v1.4.0 release: For MacOS , after having downloaded pktd-v1.4.0-macos.pkg , install pktwallet and other utilities by clicking on the package icon in the Finder. For Linux , after having downloaded one of the following packages: pktd-v1.4.0-linux.deb (Debian or Ubuntu) pktd-v1.4.0-linux.rpm (Fedora or RedHat) pktd AUR package (Arch linux or Manjaro), install pktwallet and other utilities by clicking on the appropriate package icon or running an installation command Creating a New Wallet \u00b6 To create a new PKT wallet, use the pktwallet --create command: ./bin/pktwallet --create You will be prompted to follow a few steps. Make sure you write your seed words on paper so that you can recover your funds even if your computer is damaged. Do not skip this step. You will thank yourself later. Keep it secret. Keep it safe. Launching pktwallet \u00b6 After creating your wallet, you can launch pktwallet with: ./bin/pktwallet Watch the output from the logs and when you see a log line like this: 1608294386 [INF] headerlogger.go:64 Processed 1 block in the last 24.82s (height 702781, 2020-12-18 13:26:01 +0100 CET) Compare the height number in the log line (e.g. 702781) to the number in the pkt block explorer to see when your wallet is up to date. A complete sync from a new installation can take 12+ hours. During this time, the balance in your wallet will not be accurate and you will be unable to transact. You may, however, proceed with creating an address while syncing, as detailed below. Creating a New PKT Address \u00b6 While pktwallet is running in the background (or in another terminal), use the following command: ./bin/pktctl --wallet getnewaddress You should see a series of numbers and letters beginning with pkt1 . This is your newly created PKT address which you can use for receiving coins. If you need to view it after creation, the address, along with the balance, can be seen in the output from running: ./bin/pktctl --wallet getaddressbalances 1 1 NOTE : Every time you use getnewaddress , the address you receive must be remembered by pktwallet forever. So, only use it when you actually need an address. How to install the PKT World Wallet (Windows only) \u00b6 Download the PKT World Wallet Follow the installation instructions Launch wallet Create a new wallet Enter a wallet passphrase. Make sure to save your passphrase in a safe place. Write down your wallet seed. It is very important to keep your seed in a safe place To generate a new PKT address, click Wallet. Generate new address To begin mining using the PKT World Wallet, click Miner Start Mining How to install a CLI Wallet \u00b6 If you already have a wallet created on your computer called wallet.db you will need to create a new wallet by following these steps: Download pktd-v1.5.1-macos.pkg Run the installation Open Terminal Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktwallet --create --wallet xxxx xxxx is the name of the wallet i.e. wallet personal Make sure to write this down for your notes Enter passphrase or leave empty Make sure to write this down for you notes Do NOT add additional layer of security Copy down your seed. If your wallet is destroyed, you can recover it as long as you have this seed and your wallet passphrase. Please keep in mind that anyone who has access to the seed only needs to guess your wallet passphrase to access your funds. Follow the instructions to finalize wallet How to start up CLI Wallet \u00b6 Open terminal Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktwallet --wallet (whatever you named your wallet) i.e wallet personal How to create new PKT wallet address \u00b6 Make sure you have the CLI wallet running in a separate terminal window Open Terminal Enter command: $ cd pktd Enter command: $ ~/pktd/bin/pktctl --wallet getnewaddress Save your address in a safe place that is easily accessible How to send PKT from your CLI wallet \u00b6 Make sure you have the CLI wallet running in a separate terminal window Command click on file to open Open terminal Enter command: $ cd pktd Enter Command: $ ~/pktd/pktd/bin/pktctl --wallet sendfrom pkt1xxxxx $$$$ '[\"pkt1xxxxx\"]' xxxxx = PKT address you want to send from and to $$$$ = amount of pkt you want to send How to install a CLI Wallet from Seed \u00b6 If you already have a wallet created on your computer called wallet.db you will need to create a new wallet by following these steps: Download pktd-v1.5.1-macos.pkg Command click on file to open Run the installation Open Terminal Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktwallet --create --wallet xxxx xxxx is the name of the wallet i.e. wallet personal Make sure to write this down for your notes Enter passphrase or leave empty Make sure to write this down for you notes Do NOT add additional layer of security Enter seed Start up wallet (see instructions above) Open new terminal window Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktctl --wallet getnewaddress repeat until you find receive (each of) your recovered wallet address(es) Enter the command: $ ~/pktd/bin/pktctl --wallet resync This will resync the wallet to the blockchain (takes at least 24 hours) Enter the command: $ ~/pktd/bin/pktctl --wallet getaddressbalances 1 1 this is how you view all your (sub)wallet balances Using Your Wallet \u00b6 pktctl is the program that interfaces with a running pktwallet instance. pktctl functions will not work if pktwallet is not running and accessible. Some functions will be limited until pktwallet is fully synchronized. Some functions require the wallet being unlocked before executing. Getting Your Balance \u00b6 You can check your current PKT balance using pktctl or you can check the balances of each of your addresses if you have more than one. ./bin/pktctl --wallet getbalance or: ./bin/pktctl --wallet getaddressbalances getaddressbalances by itself will not show 0 balance addresses you may have created. To show these addresses, use: ./bin/pktctl --wallet getaddressbalances 1 1 For more explanation of the meaning of the output of getaddressbalances , use: ./bin/pktctl --wallet help getaddressbalances Unlocking Wallet \u00b6 While many functions can be performed while the wallet is locked, other functions first require the wallet to be unlocked, including sending PKT and folding. The passphrase used to unlock the wallet was set when creating the wallet. To unlock your wallet for 120 seconds (this can be changed to your liking), use: ./bin/pktctl --wallet walletpassphrase 120 To keep your wallet unlocked, use: ./bin/pktctl --wallet walletpassphrase 0 If using 0 as in the previous example to keep your wallet indefinitely unlocked, it will stay unlocked until you either restart pktwallet or run: ./bin/pktctl --wallet walletlock NOTE: Special characters (e.g., !, #, & *) in your passphrase may be incorrectly interpreted by your shell. You may need to wrap your passphrase in quotes. ./bin/pktctl --wallet walletpassphrase 'suP3r_S3cReT^P@s5W0Rd!' 120 Sending PKT \u00b6 You can send PKT using the sendtoaddress command, but first you must unlock your wallet for sending, as shown in the previous step. To send cjd a 10 PKT tip: ./bin/pktctl --wallet sendtoaddress pkt1qt8xe7dwpelngtcpsgn5nkj3pwwdm7gf3l4auax 10 Sending PKT from Specific Address \u00b6 pktwallet gives you control over which addresses are used for making a payment. This means you can keep different PKT in your wallet separate, for example separating business transactions from personal transactions. NOTE : PKT is not a \"privacy coin\", so transactions are still shown in the blockchain like with Bitcoin. Unlock wallet: ./bin/pktctl --wallet walletpassphrase 60 Send 10 PKT to \"their address\" from \"your address\": ./bin/pktctl --wallet sendfrom 10 '[\"\"]' Notice the '[\" . This is because the last argument is actually a quoted JSON array . This means you can use multiple addresses as the source of a payment. For example: ./bin/pktctl --wallet sendfrom 10 '[\"\", \"\"]' Windows users require unique formatting for command prompt: pktctl.exe --wallet sendfrom 10 [\\\"\\\"] Sweeping an Address \u00b6 With pktwallet, sending 0 PKT has special significance in that it will send \"as much PKT as possible\". To sweep address into , you can use the following command: ./bin/pktctl --wallet sendfrom 0 '[\"\"]' Windows: pktctl.exe --wallet sendfrom 0 [\\\"\\\"] NOTE : Sweeping an address will send as much PKT as possible , which is not necessarily all PKT in that address. You may need to sweep multiple times before the address is empty. Folding Coins \u00b6 If you are the recipient of many transactions, such as is the case in mining, you may not be able to spend all of them at once. This is similar to someone who is paid in pennies having a difficult time using the pennies to buy a car. To solve this issue, you can consolidate all of the coins which were paid to you by folding . Folding is sweeping an address to itself . Just like in sweeping, you may need to run the command many times before you have completely folded. See FAQs for more detail. For example: ./bin/pktctl --wallet sendfrom
    0 '[\"
    \"]' Windows: pktctl.exe --wallet sendfrom
    0 [\\\"
    \\\"] Alternative GUI Wallets \u00b6 Electrum for PKT (Windows, MacOS, Linux) NOTE: Electrum is not appropriate for mining. Do NOT mine into an electrum wallet! PKT World Wallet (Windows) Zulu Wallet (MacOS) FAQs \u00b6 I have several machines mining, do I need the wallet running on each machine? \u00b6 NO! In fact, the wallet doesn't need to be running at all to mine, but you do need to ensure you have control of the address you are mining to. Should I leave pktwallet running? \u00b6 It is not a requirement to have pktwallet running to mine. However, if you leave it running, it will stay synced. This will save time when performing pktctl functions, such as folding and sending coins. If pktwallet has not been running for some time, it will need time to sync up to the current block from the time it last ran. As a safety precaution, don't forget to lock your wallet if you do keep it running. How often should I fold and why? \u00b6 The purpose of folding is to turn all your small payments (such as from mining) into quickly and easily spendable coins. If you are multi-pool mining and have rewards in every block, you will have roughly 1440 unconsolidated transactions per day - one for each block at a rate of ~ 1 block/min. If you do not fold these transactions, after awhile you'll have a huge amount of transactions to process if you wish to send the sum or portion thereof of these smaller transactions. So, while folding isn't required and will have no impact on mining if you do or do not, you're doing yourself a favor later by keeping the transactions as consolidated as possible. It is typical to fold as much as possible every day or every few days when you think about it, depending on your use case. It can also be scripted. Note that folding is a transaction itself. Depending on how much you have to fold, you may need to run the command many times. You also may need to wait for coins to confirm before folding more. Once the folding command fails or you see a very low number in the outputcount field from running ./bin/pktctl --wallet getaddressbalances 1 1 or on PKT block explorer under Unconsolidated Txns, you have successfully folded the best you can for that point in time.","title":"pktwallet"},{"location":"pktd/pktwallet/#pktwallet","text":"The command line PKT wallet","title":"pktwallet"},{"location":"pktd/pktwallet/#first-time-installation-and-launching","text":"","title":"First Time Installation and Launching"},{"location":"pktd/pktwallet/#download-pktd","text":"","title":"Download pktd"},{"location":"pktd/pktwallet/#microsoft-windows","text":"Download the most recent zip archive suffixed with -windows.zip available from pktd releases page For example: pktd-v1.4.0-windows.zip Unarchive the content of the zip file Open the command prompt and navigate to the bin directory in the extracted archive For Example: cd Downloads\\pktd*\\bin Follow the instructions below but In place of ./bin/pktwallet , use pktwallet.exe In place of ./bin/pktctl , use pktctl.exe","title":"Microsoft Windows"},{"location":"pktd/pktwallet/#macos-and-linux","text":"Download one of the most recent packages available for Linux or MacOS from pktd releases page For example, for pktd-v1.4.0 release: For MacOS , after having downloaded pktd-v1.4.0-macos.pkg , install pktwallet and other utilities by clicking on the package icon in the Finder. For Linux , after having downloaded one of the following packages: pktd-v1.4.0-linux.deb (Debian or Ubuntu) pktd-v1.4.0-linux.rpm (Fedora or RedHat) pktd AUR package (Arch linux or Manjaro), install pktwallet and other utilities by clicking on the appropriate package icon or running an installation command","title":"MacOS and Linux"},{"location":"pktd/pktwallet/#creating-a-new-wallet","text":"To create a new PKT wallet, use the pktwallet --create command: ./bin/pktwallet --create You will be prompted to follow a few steps. Make sure you write your seed words on paper so that you can recover your funds even if your computer is damaged. Do not skip this step. You will thank yourself later. Keep it secret. Keep it safe.","title":"Creating a New Wallet"},{"location":"pktd/pktwallet/#launching-pktwallet","text":"After creating your wallet, you can launch pktwallet with: ./bin/pktwallet Watch the output from the logs and when you see a log line like this: 1608294386 [INF] headerlogger.go:64 Processed 1 block in the last 24.82s (height 702781, 2020-12-18 13:26:01 +0100 CET) Compare the height number in the log line (e.g. 702781) to the number in the pkt block explorer to see when your wallet is up to date. A complete sync from a new installation can take 12+ hours. During this time, the balance in your wallet will not be accurate and you will be unable to transact. You may, however, proceed with creating an address while syncing, as detailed below.","title":"Launching pktwallet"},{"location":"pktd/pktwallet/#creating-a-new-pkt-address","text":"While pktwallet is running in the background (or in another terminal), use the following command: ./bin/pktctl --wallet getnewaddress You should see a series of numbers and letters beginning with pkt1 . This is your newly created PKT address which you can use for receiving coins. If you need to view it after creation, the address, along with the balance, can be seen in the output from running: ./bin/pktctl --wallet getaddressbalances 1 1 NOTE : Every time you use getnewaddress , the address you receive must be remembered by pktwallet forever. So, only use it when you actually need an address.","title":"Creating a New PKT Address"},{"location":"pktd/pktwallet/#how-to-install-the-pkt-world-wallet-windows-only","text":"Download the PKT World Wallet Follow the installation instructions Launch wallet Create a new wallet Enter a wallet passphrase. Make sure to save your passphrase in a safe place. Write down your wallet seed. It is very important to keep your seed in a safe place To generate a new PKT address, click Wallet. Generate new address To begin mining using the PKT World Wallet, click Miner Start Mining","title":"How to install the PKT World Wallet (Windows only)"},{"location":"pktd/pktwallet/#how-to-install-a-cli-wallet","text":"If you already have a wallet created on your computer called wallet.db you will need to create a new wallet by following these steps: Download pktd-v1.5.1-macos.pkg Run the installation Open Terminal Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktwallet --create --wallet xxxx xxxx is the name of the wallet i.e. wallet personal Make sure to write this down for your notes Enter passphrase or leave empty Make sure to write this down for you notes Do NOT add additional layer of security Copy down your seed. If your wallet is destroyed, you can recover it as long as you have this seed and your wallet passphrase. Please keep in mind that anyone who has access to the seed only needs to guess your wallet passphrase to access your funds. Follow the instructions to finalize wallet","title":"How to install a CLI Wallet"},{"location":"pktd/pktwallet/#how-to-start-up-cli-wallet","text":"Open terminal Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktwallet --wallet (whatever you named your wallet) i.e wallet personal","title":"How to start up CLI Wallet"},{"location":"pktd/pktwallet/#how-to-create-new-pkt-wallet-address","text":"Make sure you have the CLI wallet running in a separate terminal window Open Terminal Enter command: $ cd pktd Enter command: $ ~/pktd/bin/pktctl --wallet getnewaddress Save your address in a safe place that is easily accessible","title":"How to create new PKT wallet address"},{"location":"pktd/pktwallet/#how-to-send-pkt-from-your-cli-wallet","text":"Make sure you have the CLI wallet running in a separate terminal window Command click on file to open Open terminal Enter command: $ cd pktd Enter Command: $ ~/pktd/pktd/bin/pktctl --wallet sendfrom pkt1xxxxx $$$$ '[\"pkt1xxxxx\"]' xxxxx = PKT address you want to send from and to $$$$ = amount of pkt you want to send","title":"How to send PKT from your CLI wallet"},{"location":"pktd/pktwallet/#how-to-install-a-cli-wallet-from-seed","text":"If you already have a wallet created on your computer called wallet.db you will need to create a new wallet by following these steps: Download pktd-v1.5.1-macos.pkg Command click on file to open Run the installation Open Terminal Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktwallet --create --wallet xxxx xxxx is the name of the wallet i.e. wallet personal Make sure to write this down for your notes Enter passphrase or leave empty Make sure to write this down for you notes Do NOT add additional layer of security Enter seed Start up wallet (see instructions above) Open new terminal window Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktctl --wallet getnewaddress repeat until you find receive (each of) your recovered wallet address(es) Enter the command: $ ~/pktd/bin/pktctl --wallet resync This will resync the wallet to the blockchain (takes at least 24 hours) Enter the command: $ ~/pktd/bin/pktctl --wallet getaddressbalances 1 1 this is how you view all your (sub)wallet balances","title":"How to install a CLI Wallet from Seed"},{"location":"pktd/pktwallet/#using-your-wallet","text":"pktctl is the program that interfaces with a running pktwallet instance. pktctl functions will not work if pktwallet is not running and accessible. Some functions will be limited until pktwallet is fully synchronized. Some functions require the wallet being unlocked before executing.","title":"Using Your Wallet"},{"location":"pktd/pktwallet/#getting-your-balance","text":"You can check your current PKT balance using pktctl or you can check the balances of each of your addresses if you have more than one. ./bin/pktctl --wallet getbalance or: ./bin/pktctl --wallet getaddressbalances getaddressbalances by itself will not show 0 balance addresses you may have created. To show these addresses, use: ./bin/pktctl --wallet getaddressbalances 1 1 For more explanation of the meaning of the output of getaddressbalances , use: ./bin/pktctl --wallet help getaddressbalances","title":"Getting Your Balance"},{"location":"pktd/pktwallet/#unlocking-wallet","text":"While many functions can be performed while the wallet is locked, other functions first require the wallet to be unlocked, including sending PKT and folding. The passphrase used to unlock the wallet was set when creating the wallet. To unlock your wallet for 120 seconds (this can be changed to your liking), use: ./bin/pktctl --wallet walletpassphrase 120 To keep your wallet unlocked, use: ./bin/pktctl --wallet walletpassphrase 0 If using 0 as in the previous example to keep your wallet indefinitely unlocked, it will stay unlocked until you either restart pktwallet or run: ./bin/pktctl --wallet walletlock NOTE: Special characters (e.g., !, #, & *) in your passphrase may be incorrectly interpreted by your shell. You may need to wrap your passphrase in quotes. ./bin/pktctl --wallet walletpassphrase 'suP3r_S3cReT^P@s5W0Rd!' 120","title":"Unlocking Wallet"},{"location":"pktd/pktwallet/#sending-pkt","text":"You can send PKT using the sendtoaddress command, but first you must unlock your wallet for sending, as shown in the previous step. To send cjd a 10 PKT tip: ./bin/pktctl --wallet sendtoaddress pkt1qt8xe7dwpelngtcpsgn5nkj3pwwdm7gf3l4auax 10","title":"Sending PKT"},{"location":"pktd/pktwallet/#sending-pkt-from-specific-address","text":"pktwallet gives you control over which addresses are used for making a payment. This means you can keep different PKT in your wallet separate, for example separating business transactions from personal transactions. NOTE : PKT is not a \"privacy coin\", so transactions are still shown in the blockchain like with Bitcoin. Unlock wallet: ./bin/pktctl --wallet walletpassphrase 60 Send 10 PKT to \"their address\" from \"your address\": ./bin/pktctl --wallet sendfrom 10 '[\"\"]' Notice the '[\" . This is because the last argument is actually a quoted JSON array . This means you can use multiple addresses as the source of a payment. For example: ./bin/pktctl --wallet sendfrom 10 '[\"\", \"\"]' Windows users require unique formatting for command prompt: pktctl.exe --wallet sendfrom 10 [\\\"\\\"]","title":"Sending PKT from Specific Address"},{"location":"pktd/pktwallet/#sweeping-an-address","text":"With pktwallet, sending 0 PKT has special significance in that it will send \"as much PKT as possible\". To sweep address into , you can use the following command: ./bin/pktctl --wallet sendfrom 0 '[\"\"]' Windows: pktctl.exe --wallet sendfrom 0 [\\\"\\\"] NOTE : Sweeping an address will send as much PKT as possible , which is not necessarily all PKT in that address. You may need to sweep multiple times before the address is empty.","title":"Sweeping an Address"},{"location":"pktd/pktwallet/#folding-coins","text":"If you are the recipient of many transactions, such as is the case in mining, you may not be able to spend all of them at once. This is similar to someone who is paid in pennies having a difficult time using the pennies to buy a car. To solve this issue, you can consolidate all of the coins which were paid to you by folding . Folding is sweeping an address to itself . Just like in sweeping, you may need to run the command many times before you have completely folded. See FAQs for more detail. For example: ./bin/pktctl --wallet sendfrom
    0 '[\"
    \"]' Windows: pktctl.exe --wallet sendfrom
    0 [\\\"
    \\\"]","title":"Folding Coins"},{"location":"pktd/pktwallet/#alternative-gui-wallets","text":"Electrum for PKT (Windows, MacOS, Linux) NOTE: Electrum is not appropriate for mining. Do NOT mine into an electrum wallet! PKT World Wallet (Windows) Zulu Wallet (MacOS)","title":"Alternative GUI Wallets"},{"location":"pktd/pktwallet/#faqs","text":"","title":"FAQs"},{"location":"pktd/pktwallet/#i-have-several-machines-mining-do-i-need-the-wallet-running-on-each-machine","text":"NO! In fact, the wallet doesn't need to be running at all to mine, but you do need to ensure you have control of the address you are mining to.","title":"I have several machines mining, do I need the wallet running on each machine?"},{"location":"pktd/pktwallet/#should-i-leave-pktwallet-running","text":"It is not a requirement to have pktwallet running to mine. However, if you leave it running, it will stay synced. This will save time when performing pktctl functions, such as folding and sending coins. If pktwallet has not been running for some time, it will need time to sync up to the current block from the time it last ran. As a safety precaution, don't forget to lock your wallet if you do keep it running.","title":"Should I leave pktwallet running?"},{"location":"pktd/pktwallet/#how-often-should-i-fold-and-why","text":"The purpose of folding is to turn all your small payments (such as from mining) into quickly and easily spendable coins. If you are multi-pool mining and have rewards in every block, you will have roughly 1440 unconsolidated transactions per day - one for each block at a rate of ~ 1 block/min. If you do not fold these transactions, after awhile you'll have a huge amount of transactions to process if you wish to send the sum or portion thereof of these smaller transactions. So, while folding isn't required and will have no impact on mining if you do or do not, you're doing yourself a favor later by keeping the transactions as consolidated as possible. It is typical to fold as much as possible every day or every few days when you think about it, depending on your use case. It can also be scripted. Note that folding is a transaction itself. Depending on how much you have to fold, you may need to run the command many times. You also may need to wait for coins to confirm before folding more. Once the folding command fails or you see a very low number in the outputcount field from running ./bin/pktctl --wallet getaddressbalances 1 1 or on PKT block explorer under Unconsolidated Txns, you have successfully folded the best you can for that point in time.","title":"How often should I fold and why?"},{"location":"pktwalletgui/","text":"PKT Wallet MacOS GUI \u00b6 NOTE : The PKT Wallet GUI handles mining income well and is a good wallet for those hoping to hold a copy of the blockchain and to keep ownership of their own keys and passphrases for multiple addresses. First setup \u00b6 MacOS \u00b6 Download pktwallet-(version).dmg Open Finder Double-click on your Downloads folder and find and double-click on pktwallet-(version).dmg to open the disk image A new window will open with the PKT Wallet app, click and drag it into your Applications folder Press Command+Space to open your Spotlight Search and type PKT Wallet, when you see the PKT Wallet app, press the Enter key to open it. The first time PKT Wallet is opened, you will get a popup asking you if you want to open it, click open Continue with Setting up your wallet or Load Existing Wallet From Seed below. Setting up your wallet \u00b6 Before you can begin using PKT, you need to setup your wallet, this means writing down your secret key and setting passwords so your PKT will stay safe. A video tutorial is available for this method: You will be asked to create a new wallet. Click \"Create Wallet\" Enter passphrase to encrypt your wallet. This passphrase must have upper case and lower case letters and numbers. Retype the passphrase to match and click the \"Enter\" button You will be asked if you want to import an existing seed. Click the \"Continue Without Seed\" button to continue. A 15-word wallet seed will be created for you. Write this seed down. It enables you to open your PKT wallet on another computer or smartphone, for example if your current computer dies. It is advisable to write this on a piece of paper and store it in a safe place. Click \"Open Wallet\" to continue. You will be brought to the main \"Balances\" screen. By default you have no addresses, so you will need to create one. Click the \"Create Address\" button, and then click the \"Generate\" button to generate a new address. The resulting code is the public address which people can pay you at. Click \"Balances\" again to display your balances. By default, accounts with zero PKT will not be displayed unless you click \"Get All Addresses\" Load Existing Wallet From Seed \u00b6 Before you can begin using PKT, you need to setup your wallet, this means writing down your secret key and setting passwords so your PKT will stay safe. A video tutorial is available for this method: You will be asked to create a new wallet. Click \"Create Wallet\" Enter passphrase to encrypt your wallet. This passphrase must have upper case and lower case letters and numbers. Retype the passphrase to match and click the \"Enter\" button You will be asked if you want to import an existing seed. Type in your wallet seed and any passphrase. Click the \"Continue With Seed\" button to continue. Your 15-word wallet seed will be displayed on the next screen. Write this seed down. It enables you to open your PKT wallet on another computer or smartphone, for example if your current computer dies. It is advisable to write this on a piece of paper and store it in a safe place. If you have a legacy wallet (from versions prior to 1.0.0), you will never be able to retrieve this seed again from the app. Click \"Open Wallet\" to continue. You will be brought to the main \"Balances\" screen. By default you have no addresses, so you will need to create one. Click the \"Create Address\" button, and then click the \"Generate\" button to generate a new address. The resulting code is the public address which people can pay you at. If this wallet previously had a wallet, address is actually an exsting one that has been retrieved, rather than a newly created address. Click \"Balances\" again to display your balances. By default, accounts with zero PKT will not be displayed unless you click \"Get All Addresses\". It may take several hours for the app to sync the blockchain for the first time. During that time, balances will not be available for your addresses. You will have to verify the balance on the address using the PKT Blockchain Explorer Click \"Receive\" and select the wallet you want to inspect Copy and paste the address into the search field of the PKT Blockchain Explorer, then click the \"Search\" icon. Receiving PKT \u00b6 To receive coins, you need to create a new PKT address Click the \"Receive\" tab Type a description for the purpose of receiving the coins, this will appear in the notification when you get paid Set the expiration, if this is not an invoice , you can choose \"never\" After you click \"Request\", your wallet will create a new address and copy it to your clipboard so you can send it to the person paying you (or transfer money to your new wallet) When PKT gets sent to your new address, you will get a notification. It says \"unconfirmed\" because the transaction has not yet been included in the history of the blockchain. Congratulations, you have received your first PKT. It make take some time before the transaction is confirmed by the network and the PKT is formally in your account. Sending PKT \u00b6 To pay PKT to someone else, click on the Send tab and paste the address to be paid Type a description of the payment, this is just for you, it will not be sent to the person you are paying Enter the amount to be paid Click Pay You will be prompted to enter your wallet passphrase in order to decrypt the wallet for one brief moment to send the PKT Every transaction requires a fee for inclusion in the blockchain, this is a very small cost: 132 nPKT is one hundred and thirty two nano-PKT (that means billionths , i.e. 0.000000132 PKT) After you enter your passphrase and click \"send\", you will see a transaction ID , this set of numbers and letters uniquely identifies your transaction and can be used to view it in the block explorer. Just like when receiving, your transaction will appear first as \"unconfirmed\" and then later it will switch to a clock when it has been included in the blockchain. When people consider a transaction to be \"complete\" depends on the merchant, but in after some time the transaction will be confirmed and the PKT be in the recipient's account. Congratulations, you've sent PKT! About Units \u00b6 Each PKT is made up of 1000 milli-PKT, denoted mPKT Each milli-PKT is sub-divided into 1000 micro-PKT, denoted uPKT Each micro-PKT is sub-divided into 1000 nano-PKT, denoted nPKT Statistical Verification \u00b6 PKT Electrum makes the job of an attacker hard by asking for an unpredictable random set of PacketCrypt proofs, the chance of any give block being verified is based on the distance between the tip of the chain and that block. The chance is defined as MIN(100%, K / distance_from_tip) where K is a constant which we set at 20 to make PKT Electrum verify around 200 blocks total. With K = 20 , the first 20 blocks have a 100% chance of being verified. * block 21 has a 95% chance * block 25 has an 80% chance * block 50 has a 40% chance * block 80 has a 25% chance The distribution of likelyhood of verifying a block is shown by this chart:","title":"PKT Wallet MacOS GUI"},{"location":"pktwalletgui/#pkt-wallet-macos-gui","text":"NOTE : The PKT Wallet GUI handles mining income well and is a good wallet for those hoping to hold a copy of the blockchain and to keep ownership of their own keys and passphrases for multiple addresses.","title":"PKT Wallet MacOS GUI"},{"location":"pktwalletgui/#first-setup","text":"","title":"First setup"},{"location":"pktwalletgui/#macos","text":"Download pktwallet-(version).dmg Open Finder Double-click on your Downloads folder and find and double-click on pktwallet-(version).dmg to open the disk image A new window will open with the PKT Wallet app, click and drag it into your Applications folder Press Command+Space to open your Spotlight Search and type PKT Wallet, when you see the PKT Wallet app, press the Enter key to open it. The first time PKT Wallet is opened, you will get a popup asking you if you want to open it, click open Continue with Setting up your wallet or Load Existing Wallet From Seed below.","title":"MacOS"},{"location":"pktwalletgui/#setting-up-your-wallet","text":"Before you can begin using PKT, you need to setup your wallet, this means writing down your secret key and setting passwords so your PKT will stay safe. A video tutorial is available for this method: You will be asked to create a new wallet. Click \"Create Wallet\" Enter passphrase to encrypt your wallet. This passphrase must have upper case and lower case letters and numbers. Retype the passphrase to match and click the \"Enter\" button You will be asked if you want to import an existing seed. Click the \"Continue Without Seed\" button to continue. A 15-word wallet seed will be created for you. Write this seed down. It enables you to open your PKT wallet on another computer or smartphone, for example if your current computer dies. It is advisable to write this on a piece of paper and store it in a safe place. Click \"Open Wallet\" to continue. You will be brought to the main \"Balances\" screen. By default you have no addresses, so you will need to create one. Click the \"Create Address\" button, and then click the \"Generate\" button to generate a new address. The resulting code is the public address which people can pay you at. Click \"Balances\" again to display your balances. By default, accounts with zero PKT will not be displayed unless you click \"Get All Addresses\"","title":"Setting up your wallet"},{"location":"pktwalletgui/#load-existing-wallet-from-seed","text":"Before you can begin using PKT, you need to setup your wallet, this means writing down your secret key and setting passwords so your PKT will stay safe. A video tutorial is available for this method: You will be asked to create a new wallet. Click \"Create Wallet\" Enter passphrase to encrypt your wallet. This passphrase must have upper case and lower case letters and numbers. Retype the passphrase to match and click the \"Enter\" button You will be asked if you want to import an existing seed. Type in your wallet seed and any passphrase. Click the \"Continue With Seed\" button to continue. Your 15-word wallet seed will be displayed on the next screen. Write this seed down. It enables you to open your PKT wallet on another computer or smartphone, for example if your current computer dies. It is advisable to write this on a piece of paper and store it in a safe place. If you have a legacy wallet (from versions prior to 1.0.0), you will never be able to retrieve this seed again from the app. Click \"Open Wallet\" to continue. You will be brought to the main \"Balances\" screen. By default you have no addresses, so you will need to create one. Click the \"Create Address\" button, and then click the \"Generate\" button to generate a new address. The resulting code is the public address which people can pay you at. If this wallet previously had a wallet, address is actually an exsting one that has been retrieved, rather than a newly created address. Click \"Balances\" again to display your balances. By default, accounts with zero PKT will not be displayed unless you click \"Get All Addresses\". It may take several hours for the app to sync the blockchain for the first time. During that time, balances will not be available for your addresses. You will have to verify the balance on the address using the PKT Blockchain Explorer Click \"Receive\" and select the wallet you want to inspect Copy and paste the address into the search field of the PKT Blockchain Explorer, then click the \"Search\" icon.","title":"Load Existing Wallet From Seed"},{"location":"pktwalletgui/#receiving-pkt","text":"To receive coins, you need to create a new PKT address Click the \"Receive\" tab Type a description for the purpose of receiving the coins, this will appear in the notification when you get paid Set the expiration, if this is not an invoice , you can choose \"never\" After you click \"Request\", your wallet will create a new address and copy it to your clipboard so you can send it to the person paying you (or transfer money to your new wallet) When PKT gets sent to your new address, you will get a notification. It says \"unconfirmed\" because the transaction has not yet been included in the history of the blockchain. Congratulations, you have received your first PKT. It make take some time before the transaction is confirmed by the network and the PKT is formally in your account.","title":"Receiving PKT"},{"location":"pktwalletgui/#sending-pkt","text":"To pay PKT to someone else, click on the Send tab and paste the address to be paid Type a description of the payment, this is just for you, it will not be sent to the person you are paying Enter the amount to be paid Click Pay You will be prompted to enter your wallet passphrase in order to decrypt the wallet for one brief moment to send the PKT Every transaction requires a fee for inclusion in the blockchain, this is a very small cost: 132 nPKT is one hundred and thirty two nano-PKT (that means billionths , i.e. 0.000000132 PKT) After you enter your passphrase and click \"send\", you will see a transaction ID , this set of numbers and letters uniquely identifies your transaction and can be used to view it in the block explorer. Just like when receiving, your transaction will appear first as \"unconfirmed\" and then later it will switch to a clock when it has been included in the blockchain. When people consider a transaction to be \"complete\" depends on the merchant, but in after some time the transaction will be confirmed and the PKT be in the recipient's account. Congratulations, you've sent PKT!","title":"Sending PKT"},{"location":"pktwalletgui/#about-units","text":"Each PKT is made up of 1000 milli-PKT, denoted mPKT Each milli-PKT is sub-divided into 1000 micro-PKT, denoted uPKT Each micro-PKT is sub-divided into 1000 nano-PKT, denoted nPKT","title":"About Units"},{"location":"pktwalletgui/#statistical-verification","text":"PKT Electrum makes the job of an attacker hard by asking for an unpredictable random set of PacketCrypt proofs, the chance of any give block being verified is based on the distance between the tip of the chain and that block. The chance is defined as MIN(100%, K / distance_from_tip) where K is a constant which we set at 20 to make PKT Electrum verify around 200 blocks total. With K = 20 , the first 20 blocks have a 100% chance of being verified. * block 21 has a 95% chance * block 25 has an 80% chance * block 50 has a 40% chance * block 80 has a 25% chance The distribution of likelyhood of verifying a block is shown by this chart:","title":"Statistical Verification"},{"location":"running_infrastructure/cjdns_node/","text":"Set up a CJDNS node \u00b6 This guide will help you set up a CJDNS node on a server. Requirements \u00b6 A server running debian based Linux (preferrably Ubuntu 22.04) with docker installed Steps \u00b6 Create a data directory where the server configuration will be stored. mkdir vpn_data Get the latest docker image docker pull pkteer/pkt-server Configure the server by running the following command: docker run -it --rm -v $(pwd)/vpn_data:/data pkteer/pkt-server /configure.sh --novpn The configure process will create: * a cjdroute.conf at data/cjdroute.conf * PKT wallet at data/pktwallet/pkt/wallet.db * store the wallet's seed phrase at data/pktwallet/pkt/seed.txt configure.sh can take the following flags: * --no-vpn: To configure the server without setting up the VPN server * --with-pktd: To configure the server with a local PKT daemon * --pktd-passwd= : To set a password for the PKT daemon Alternativly you can edit the config.json file manually. NOTE : Make sure to safely store your seed phrase in order to be able to import your wallet on your computer. And delete the seed.txt file after. Run the server by running the following commands: ./vpn_data/start.sh This will start the server and may expose the following ports: * cjdns port set from cjdroute.conf * cjdns admin rpc port set from cjdroute.conf (default 11234) * 8099 for anodevpn server * 5201 for iperf3 * 64764 for pktd","title":"How to Run a CJDNS Node"},{"location":"running_infrastructure/cjdns_node/#set-up-a-cjdns-node","text":"This guide will help you set up a CJDNS node on a server.","title":"Set up a CJDNS node"},{"location":"running_infrastructure/cjdns_node/#requirements","text":"A server running debian based Linux (preferrably Ubuntu 22.04) with docker installed","title":"Requirements"},{"location":"running_infrastructure/cjdns_node/#steps","text":"Create a data directory where the server configuration will be stored. mkdir vpn_data Get the latest docker image docker pull pkteer/pkt-server Configure the server by running the following command: docker run -it --rm -v $(pwd)/vpn_data:/data pkteer/pkt-server /configure.sh --novpn The configure process will create: * a cjdroute.conf at data/cjdroute.conf * PKT wallet at data/pktwallet/pkt/wallet.db * store the wallet's seed phrase at data/pktwallet/pkt/seed.txt configure.sh can take the following flags: * --no-vpn: To configure the server without setting up the VPN server * --with-pktd: To configure the server with a local PKT daemon * --pktd-passwd= : To set a password for the PKT daemon Alternativly you can edit the config.json file manually. NOTE : Make sure to safely store your seed phrase in order to be able to import your wallet on your computer. And delete the seed.txt file after. Run the server by running the following commands: ./vpn_data/start.sh This will start the server and may expose the following ports: * cjdns port set from cjdroute.conf * cjdns admin rpc port set from cjdroute.conf (default 11234) * 8099 for anodevpn server * 5201 for iperf3 * 64764 for pktd","title":"Steps"},{"location":"running_infrastructure/cjdns_website/","text":"How to set up your own self-hosted website on cjdns network. \u00b6 The following setup has been tested on a Raspberry Pi 4. Go to https://yunohost.org/en/install Select Raspberry Pi Download the YunoHost image Go to https://www.raspberrypi.com/news/raspberry-pi-imager-imaging-utility/ Download Pi Imager Flash the YunoHost image to your SD card using the Pi Imager Then insert the SD card into your Raspberry Pi and boot it up. Access the YunoHost admin panel by going to https://yunohost.local Start the post-installation process In the Set main-domain select \"I want a domain for local usage / test only\" Complete the post-installation process Once the post-installation process is complete, go to the YunoHost admin panel and log in Select the \"Applications\" tab and click on \"Install\" Search for \"wordpress\", select it. Scroll down and select \"administrator for this site\" Click on \"Install\" Upon completion go to \"Applications\" and click \"Install\" again Scroll down on \"Install custom app\" and paste the following link: https://github.com/dkoukoul/cjdns_ynh Click on \"Install\" On completion your cjdns ipv6 address will be displayed, copy it. Accessing your website \u00b6 For anyone to access your cjdns site they need to be on the cjdns network, either by running cjdns on their device or by connecting to one of the VPN exits that allow access to cjdns network. Go to a browser and paste the ipv6 address after http and inside square brackets like this: http://[your-cjdns_ipv6_address]/blog NOTE : Make sure to remove any leading 0 from each section of the ipv6 address. for example if your cjdns ipv6 is ending with ... :0ad2 it should be ... :ad2 in the browser. Set up a domain for your site \u00b6 First you will need to own a domain name for example \"pkt.net\". Select one of the VPN exits that have a running SNI proxy and copy their IPv4 address. Go to your domain registrar and set up the following DNS records: A record: pkt.net -> [VPN server IPv4 address] AAAA record: h.pkt.net -> [your-cjdns_ipv6_address] for example if the VPN server's IPv4 address is 51.79.51.242 your domain is pkt.net and your cjdns IPv6 address where your site is running is fc04:8212:c1fa:94ad:e554:7bac:1264:0ad2 your A record should be: * A record: pkt.net -> 51.79.51.242 and your AAAA record should be: * AAAA record: h.pkt.net -> fc04:8212:c1fa:94ad:e554:7bac:1264:ad2 Register domain with VPN server \u00b6 Request the VPN server operator to add your domain to their SNI proxy by editing the following command replacing it with your domain and cjdns ipv6 address and the VPN server's IPv4 address: curl -X POST --H \"Content-Type: application/json\" -d '{\"domain\":\"domain.com\",\"cjdnsIpv6\":\"your_cjdns_ipv6_address\"} http://[VPN server IPv4 address]:8099/api/0.4/server/domain/add/ Set up the domain in yunohost \u00b6 Log in into your yunohost admin panel. Go to \"Domains\" and click on \"Add domain\" Click on \" I want to add a domain I own, or a subdomain\" add your domain and click on \"Add\" Select your newly added domain. Go to tab \"Certificates\" Click on \"Ignore diagnosis checks\" and then you can request a certificate for your domain by going clicking \"Install Let's Encrypt certificate\".","title":"How to Run a CJDNS Website"},{"location":"running_infrastructure/cjdns_website/#how-to-set-up-your-own-self-hosted-website-on-cjdns-network","text":"The following setup has been tested on a Raspberry Pi 4. Go to https://yunohost.org/en/install Select Raspberry Pi Download the YunoHost image Go to https://www.raspberrypi.com/news/raspberry-pi-imager-imaging-utility/ Download Pi Imager Flash the YunoHost image to your SD card using the Pi Imager Then insert the SD card into your Raspberry Pi and boot it up. Access the YunoHost admin panel by going to https://yunohost.local Start the post-installation process In the Set main-domain select \"I want a domain for local usage / test only\" Complete the post-installation process Once the post-installation process is complete, go to the YunoHost admin panel and log in Select the \"Applications\" tab and click on \"Install\" Search for \"wordpress\", select it. Scroll down and select \"administrator for this site\" Click on \"Install\" Upon completion go to \"Applications\" and click \"Install\" again Scroll down on \"Install custom app\" and paste the following link: https://github.com/dkoukoul/cjdns_ynh Click on \"Install\" On completion your cjdns ipv6 address will be displayed, copy it.","title":"How to set up your own self-hosted website on cjdns network."},{"location":"running_infrastructure/cjdns_website/#accessing-your-website","text":"For anyone to access your cjdns site they need to be on the cjdns network, either by running cjdns on their device or by connecting to one of the VPN exits that allow access to cjdns network. Go to a browser and paste the ipv6 address after http and inside square brackets like this: http://[your-cjdns_ipv6_address]/blog NOTE : Make sure to remove any leading 0 from each section of the ipv6 address. for example if your cjdns ipv6 is ending with ... :0ad2 it should be ... :ad2 in the browser.","title":"Accessing your website"},{"location":"running_infrastructure/cjdns_website/#set-up-a-domain-for-your-site","text":"First you will need to own a domain name for example \"pkt.net\". Select one of the VPN exits that have a running SNI proxy and copy their IPv4 address. Go to your domain registrar and set up the following DNS records: A record: pkt.net -> [VPN server IPv4 address] AAAA record: h.pkt.net -> [your-cjdns_ipv6_address] for example if the VPN server's IPv4 address is 51.79.51.242 your domain is pkt.net and your cjdns IPv6 address where your site is running is fc04:8212:c1fa:94ad:e554:7bac:1264:0ad2 your A record should be: * A record: pkt.net -> 51.79.51.242 and your AAAA record should be: * AAAA record: h.pkt.net -> fc04:8212:c1fa:94ad:e554:7bac:1264:ad2","title":"Set up a domain for your site"},{"location":"running_infrastructure/cjdns_website/#register-domain-with-vpn-server","text":"Request the VPN server operator to add your domain to their SNI proxy by editing the following command replacing it with your domain and cjdns ipv6 address and the VPN server's IPv4 address: curl -X POST --H \"Content-Type: application/json\" -d '{\"domain\":\"domain.com\",\"cjdnsIpv6\":\"your_cjdns_ipv6_address\"} http://[VPN server IPv4 address]:8099/api/0.4/server/domain/add/","title":"Register domain with VPN server"},{"location":"running_infrastructure/cjdns_website/#set-up-the-domain-in-yunohost","text":"Log in into your yunohost admin panel. Go to \"Domains\" and click on \"Add domain\" Click on \" I want to add a domain I own, or a subdomain\" add your domain and click on \"Add\" Select your newly added domain. Go to tab \"Certificates\" Click on \"Ignore diagnosis checks\" and then you can request a certificate for your domain by going clicking \"Install Let's Encrypt certificate\".","title":"Set up the domain in yunohost"},{"location":"running_infrastructure/vpn_server/","text":"Set up your own VPN Server \u00b6 This guide will help you set up a CJDNS node with PKT wallet and the following services: * AnodeVPN server * IKEv2 Ipsec VPN server * OpenVPN server * SNI proxy Requirements \u00b6 A server running debian based Linux (preferrably Ubuntu 22.04) with docker installed Steps \u00b6 Create a data directory where the server configuration will be stored. mkdir vpn_data Configure the server by running the following command: docker run -it --rm -v $(pwd)/vpn_data:/data pkteer/pkt-server /configure.sh Configure various service by running the following command: ./vpn_data/setup.sh The script will prompt you to set up various flags and values needed for setting up the services the first time. Run the server by running the following commands: ./vpn_data/start-vpn.sh NOTE : It can take a few minutes on the first run for the server to set up all the services. Monitoring the server \u00b6 You can view the progress of the server by running: docker logs -f pkt-server You can also check the status of all services by running: ./vpn_data/status.sh","title":"How to Run a VPN Server"},{"location":"running_infrastructure/vpn_server/#set-up-your-own-vpn-server","text":"This guide will help you set up a CJDNS node with PKT wallet and the following services: * AnodeVPN server * IKEv2 Ipsec VPN server * OpenVPN server * SNI proxy","title":"Set up your own VPN Server"},{"location":"running_infrastructure/vpn_server/#requirements","text":"A server running debian based Linux (preferrably Ubuntu 22.04) with docker installed","title":"Requirements"},{"location":"running_infrastructure/vpn_server/#steps","text":"Create a data directory where the server configuration will be stored. mkdir vpn_data Configure the server by running the following command: docker run -it --rm -v $(pwd)/vpn_data:/data pkteer/pkt-server /configure.sh Configure various service by running the following command: ./vpn_data/setup.sh The script will prompt you to set up various flags and values needed for setting up the services the first time. Run the server by running the following commands: ./vpn_data/start-vpn.sh NOTE : It can take a few minutes on the first run for the server to set up all the services.","title":"Steps"},{"location":"running_infrastructure/vpn_server/#monitoring-the-server","text":"You can view the progress of the server by running: docker logs -f pkt-server You can also check the status of all services by running: ./vpn_data/status.sh","title":"Monitoring the server"},{"location":"start_mining/announcement-mining/","text":"How to Start Announcement Mining \u00b6 Announcement Mining creates a small (1KB) message that is difficult to compress and proves work was done. Announcements are transmitted to and collected by block miners to form blocks. This simulates the transmission of data across the network. Announcement miners must maximize their CPU processing power and bandwidth upload speed for the highest yields. Announcement mining can be done from nearly any device that has a CPU processor and access to bandwidth. Also include: Multi-pool mining means submitting the exact same announcements to multiple pools. So if you have the bandwidth available it will always benefit you to mine in all of the major pools. Mining \u00b6 PacketCrypt is a bandwidth hard proof of work , this means it requires lots of bandwidth to mine. Miners collaborate with one another by sending small messages (called Announcements ) and the sending of these messages requires a large amount of bandwidth . Miners who are working in collaboration with one another are members of a mining pool, therefore all mining of PacketCrypt is done in pools. PacketCrypt mining is split into two distinct stages: Announcement Mining - Using your CPU to create Announcements Block Mining - Collecting Announcements from Announcement Miners and using them to mine blocks Block mining is typically done at the mining pool's datacenter, however Announcement mining can be done from anywhere. How to Announcement mine \u00b6 There are a number of options available when it comes to installing the PacketCrpyt announcement miner. Choose whichever best suits your technical ability: 1. Install a Pre-built Binary \u00b6 Pre-built packetcrypt binaries (for linux) or installation packages (for macos) and archives (for windows) can be downloaded from packetcrypt releases page . For windows , download the zip archive suffixed with -windows.zip and extract its content. For macos , download the package suffixed with .pkg and click on its icon in the Finder for installation. For linux , download the binary suffixed with -linux_amd64 and rename it packetcrypt . If you're on Arch linux or Manjaro, you can install the packetcrypt AUR package 2. Deploy a Docker Image \u00b6 There is a PacketCrypt Docker image available, which can be used for announcement mining. To install: Download and install Docker for your operating system. Download the PacketCrypt Docker image: $ docker pull thomasjp0x42/packetcrypt There are also PacketCrypt Docker images built without the portable flag ( --no-portable ) which may increase the performance of the announcement mining while reducing CPU compatibility. One such image (compiled on AMD 5950x) is available at thomasjp0x42/packetcrypt-amd64 . Additionally, for ARM devices such as Raspberry Pi, there is an image available at thomasjp0x42/packetcrypt-arm64 . The arm64 image will also work on Apple silicon such as the M1 and M2 chips. Run the container similar to the commands described in the Begin Announcement Mining section, except replace this part of the command: $ packetcrypt with this command to run PacketCrypt from Docker: $ docker run thomasjp0x42/packetcrypt The final command will be formatted like this: $ docker run thomasjp0x42/packetcrypt ann -p More information can be found at the PacketCrypt DockerHub page 3. Build From Source \u00b6 Building from source will generally offer the best mining performance but requires more technical knowledge than the previous two options. First install rust if you haven't, see: rustup git clone https://github.com/cjdelisle/packetcrypt_rs cd packetcrypt_rs cargo build --release See the PacketCrypt GitHub repository for more detailed instructions. Begin Announcement Mining \u00b6 Important You cannot mine into the electrum wallet , You can only mine into the Command Line Wallet , the Pkt.World Wallet or the Mac GUI Wallet . To begin mining, you will need the address of your wallet and you will need to choose a pool. There are two ways to configure the announcement miner; by using CLI parameters or by using a configuration file: Using the CLI packetcrypt ann -p pool_1 [pool_2 pool_3 pool_4] [or for windows] packetcrypt.exe ann -p pool_1 [pool_2 pool_3 pool_4] Using a Configuration File A configuration file must be in JSON format. The file can be loaded from the local filesystem or from a web-accessible location. Any CLI parameters used will overide the corresponding settings in the configuration file. Example config.json: { \"payment_addr\": \"\", \"pools\": [ \"pool_1\", \"pool_2\", \"pool_3\", \"pool_4\" ] } packetcrypt ann -c \"./config.json\" [or] packetcrypt ann -c \"https://example.com/config.json\" [or for windows] packetcrypt.exe ann -c \"./config.json\" [or] packetcrypt.exe ann -c \"https://example.com/config.json\" Announcement mining can be done into a single pool or multiple pools. When you announcement mine into multiple pools, you will be paid by each pool that you submit announcements to. pool_1 is the pool running the highest difficulty. If you notice problems, you can test listing the pools in a different order. The number of pools you mine into is at your discretion. If a pool is down or malfunctioning you will notice the pool is not mining at [100%] in your mining feed and you can choose to remove the under-performing or malfunctioning pool. How to install a PKT miner on Mac \u00b6 Install the Zulu or CLI PKT Wallet from https://docs.pkt.cash Download the PacketCrypt.pkg for mac Open your Terminal Install Rust by entering in the command: $ curl --proto '=https' --tlsv1.2 -sSf * https://sh.rustup.rs | sh Press 1 to confirm Enter the command: $ sudo install make Enter the command: $ git clone https://github.com/cjdelisle/packetcrypt_rs Enter the command: $ cd packetcrypt_rs Enter the command: $ ~/.cargo/bin/cargo build --release Enter the command: $ ./target/release/packetcrypt ann -p [your PKT Wallet Address] [pool 1] [pool 2] [pool 3] [pool 4] Choosing Pools to mine in \u00b6 You can mine in as many pools as you have the bandwidth to supply. The same data will be uploaded so your CPU is only used once. Currently the pools which are regularly winning blocks include: Pkteer: http://pool.pkteer.com PKTPool: http://pool.pktpool.io PktWorld: http://pool.pkt.world Zetahash (f.k.a. Srizbi): https://stratum.zetahash.com In general the recommendation is to list the pool with highest difficulty in the first position to ensure your announcements will be accepted, as the standardized policy is to accept announcements of a higher difficulty for pools with a lower base difficulty. In some cases the rewards might vary depending on the pool order regardless of difficulty, subject to custom policies implemented by the respective pools. (Check the relevant channels on Discord for current pool statuses) You should test your daily earnings on each pool to see which one is best. Your mining revenue depends on how much each pool allocates towards announcement miners as well as how much hardware they are using in-house. The pools are winning different blocks and if you mine to just one pool, your not getting any payment from the others when they win a block. It's the same with mining to a pool that is not winning any blocks. Limiting System Resource Usage \u00b6 Limiting the system resources available to Packetcrypt may negatively effect your mining power but can be useful to conserve resources for other processess. Limit CPU Usage \u00b6 Announcement mining is a resource intensive process. By default, Packetcrypt will use 100% of the available CPU resources. CPU usage can be limited by assigning a limited number of threads to packetcrypt using the -t CLI parameter or \"threads\" key if using a configuration file. Example of assigning four (4) threads to Packetcrypt: packetcrypt ann -p pool_1 [pool_2 pool_3 pool_4] -t 4 or { \"threads\" 4 } Limit Bandwidth Usage \u00b6 Bandwidth usage is directly related to two main factors: 1 - Mining difficulty of the primary pool (the first pool listed in Packetcrypt pool configuration) A lower difficulty means higher bandwidth usage 2 - The number of pools mined Packetcrypt will send the same Announcements to each pool mined Bandwidth usage can therefore be limited by selecting a higher difficulty pool as the primary pool and/or by mining to fewer pools. Block Mining & Running a Pool \u00b6 Because each block miner must use as much bandwidth as all of the announcement miners combined , block mining is typically done at the location of the pool. Even a pool operator who wanted to support external block mining would find that the pool itself would need enough upload bandwidth to match all of the block miners - which would be completely untenable. If you are interested in block mining, contact the pool operator and discuss sending hardware to their location. Starting your own pool requires setting up a number of services: pktd node (one or more) - One pktd instance is required for the Master to function, each of the Block Handlers may optionally use separate pktd nodes. Master (one) - This node coordinates all of the others and provides work files and configuration Ann Handler (one or more) - These are high performance nodes which accept announcements from the announcement miners in the network, they also provide announcements to the block miners. As you scale up the amount of bandwidth in the pool, you will need to add more Ann handlers. Block Miner (one or more) - These nodes download announcements from the announcement handlers and use them in the mining process to mine blocks. Block Handlers (one or more) - These nodes receive \"block shares\" from the block miners and submit blocks if Paymaker (1) - This node receives updates from the Ann Handlers and Block Handlers and keeps track of who should be paid. The Paymaker sends configuration to the pktd node which is used by the Master in order to make the pool pay out the announcement and block miners PacketCrypt Data Flow \u00b6 \u2588 Orange: Announcements are sent from the Announcement miners to the Ann Handlers and then to the Block miners \u2588 Blue: Block shares are sent from block miners to Block Handler(s) \u2588 Purple: Winning blocks are submitted by the Block Handler(s) to pktd and the PKT network \u2588 Pink: Block Handlers and Ann Handlers inform Paymaker of work done by announcement and block miners \u2588 Green: Paymaker configures pktd instance to create blocks which pay the people who have been mining \u2588 Brown: Master gets block templates from pktd instance Black dotted line: All nodes request configuration and block templates from Master node More Information and PacketCrypt Pool Code \u00b6 The code and documentation for running a pool is available on the C / nodejs version of the PacketCrypt project, the new Rust version only contains Announcement Miner and Announcement Handlers. Announcement Difficulty \u00b6 PacketCrypt is designed in such a way that a mining pool can double its effective power by: Doubling the total block mining computation effort Doubling the total announcement mining computation effort, or Doubling the amount of bandwidth between announcement miners and the pool The way that a pool operator limits the amount of bandwidth flowing into the pool, to prevent overloading of the network, is by setting what is known as the announcement difficulty . The announcement difficulty for a pool specifies how much work must be done on an announcement in order for the announcement to be accepted and paid out by the pool. Announcement difficulty serves to slow down the announcement miners to protect the pool's network. In general, doubling the announcement difficulty will halve the amount of bandwidth used by the pool and will also halve the pool's overall mining power, with a limit that setting the announcement difficulty lower than 2 does not bring any additional value. To explain why it works like this, we need to examine the PacketCrypt algorithm rules and the in particular how the block mining software decides which announcements to use when attempting to mine a block. Announcement Set Selection \u00b6 PacketCrypt algorithm allows block miners to perform less work if they are able to prove that they had a certain number of \"high value\" announcements in memory at the time of mining, the exact ratio of actual work a block miner must do to the amount of work the PKT blockchain requires is called the power multipler . For a block miner seeking to optimize their power multiplier, every announcement has a particular level of utility value which is based on the amount of work that was done by the announcement miner (announcement difficulty) and how old the announcement is. We call this the effective difficulty . The effective difficulty of an announcement starts off as the actual difficulty of the work done to mine it and then decreases by half every block-period until it is less than 1 and the announcement is no longer usable for mining. The block mining software selects a subset of announcements which which will give it the best power multiplier based on the PacketCrypt algorithm: power_multiplier = min(effective_difficulty) * ann_count ** 2 The min(effective_difficulty) is the effective difficulty of the \"least valuable\" announcement that is being mined with. Lets assume that announcement miners are providing a steady supply of 1000 announcements per block-period and all announcements have an initial announcement difficulty of 128. The block mining software can choose to mine with 1000 announcements at 128 effective difficulty, or with 2000 announcements at 64 effective difficulty, or with 3000 announcements at 32 effective difficulty and so on. The best choice is to use the previous three block periods which provides a power multiplier that is 225% higher than that of using just the most recent 1 period worth of announcements. This curve is the same no matter what difficulty we are starting with. Optimal Difficulty Curve \u00b6 Knowing that the optimal announcement set is all of those announcements mined over the past 3 block periods, we can compute the overall power of a pool as the announcement difficulty is raised. At announcement difficulty 1, announcements cannot be used for more than 1 block, but if we imagine that the announcement mining community can produce 1000 announcements per block at difficulty 1 then we can reason that the power multiplier will be 1000 ** 2 or 1 million. At difficulty 2 we can expect the announcement miners will produce 500 announcements per block period but since 2 block periods can be used, the power multiplier is the same. At difficulty 4, the announcement miners will produce 250 announcements per block period and they will be valid for 3 block periods making the power multiplier 750 ** 2 or 562,500. From here, the power output of the power multiplier of the optimal announcement set halves for each doubling of the announcement difficulty, making the optimal difficulty 2 . FAQ for ANN Miners \u00b6 What does overflow mean? \u00b6 When the ann handler receives an announcement, it puts it into a queue, when the queue fills up it responds overflow immediately. The queue can become long, so you may receive \"operation timed out\" you're still being paid, when you receive \"overflow\" you are not being paid. Unfortunately, you may also receive \"operation timed out\" because the handler is unresponsive, it's not obvious which is the reason from looking at the logs. For example, what you will see in the AnnMiner Logs: 1618394538 INFO annmine.rs:519 467 Ke/s 28.56Mb/s overflow: [0, 0, 3072, 0] uploading: [0, 0, 17632, 0] accept/reject: [26932/0, 0/0, 4856/0, 796/0] - goodrate: [100%, 100%, 61%, 100%] 467 Ke/s 467 kilo-encryptions (thousands of encryptions) per second of mining power. 28.56Mb/s Total upload bandwidth (to all pools - combined) overflow: [0, 0, 3072, 0] Overflowed the internal queue of the ann miner, before it was even able to upload to the pool, one number for each pool you're mining to. 3072 Number of anns which are not uploaded to pool #3. uploading [0, 0, 17632, 0] Number of anns currently in-flight in active http requests, again 3rd pool is a problem, others are doing well (in this example). accept/reject [26932/0, 0/0, 4856/0, 796/0] Anns accepted/rejected by each pool, these numbers are based on the previous 10 seconds, pool #2 is giving a zero accepted which might be an issue, keep watching the next message 10 seconds later for another update. goodrate [100%, 100%, 61%, 100%] Goodrate = number of anns accepted divided by number of anns produced.","title":"How to Start Announcement Mining"},{"location":"start_mining/announcement-mining/#how-to-start-announcement-mining","text":"Announcement Mining creates a small (1KB) message that is difficult to compress and proves work was done. Announcements are transmitted to and collected by block miners to form blocks. This simulates the transmission of data across the network. Announcement miners must maximize their CPU processing power and bandwidth upload speed for the highest yields. Announcement mining can be done from nearly any device that has a CPU processor and access to bandwidth. Also include: Multi-pool mining means submitting the exact same announcements to multiple pools. So if you have the bandwidth available it will always benefit you to mine in all of the major pools.","title":"How to Start Announcement Mining"},{"location":"start_mining/announcement-mining/#mining","text":"PacketCrypt is a bandwidth hard proof of work , this means it requires lots of bandwidth to mine. Miners collaborate with one another by sending small messages (called Announcements ) and the sending of these messages requires a large amount of bandwidth . Miners who are working in collaboration with one another are members of a mining pool, therefore all mining of PacketCrypt is done in pools. PacketCrypt mining is split into two distinct stages: Announcement Mining - Using your CPU to create Announcements Block Mining - Collecting Announcements from Announcement Miners and using them to mine blocks Block mining is typically done at the mining pool's datacenter, however Announcement mining can be done from anywhere.","title":"Mining"},{"location":"start_mining/announcement-mining/#how-to-announcement-mine","text":"There are a number of options available when it comes to installing the PacketCrpyt announcement miner. Choose whichever best suits your technical ability:","title":"How to Announcement mine"},{"location":"start_mining/announcement-mining/#1-install-a-pre-built-binary","text":"Pre-built packetcrypt binaries (for linux) or installation packages (for macos) and archives (for windows) can be downloaded from packetcrypt releases page . For windows , download the zip archive suffixed with -windows.zip and extract its content. For macos , download the package suffixed with .pkg and click on its icon in the Finder for installation. For linux , download the binary suffixed with -linux_amd64 and rename it packetcrypt . If you're on Arch linux or Manjaro, you can install the packetcrypt AUR package","title":"1. Install a Pre-built Binary"},{"location":"start_mining/announcement-mining/#2-deploy-a-docker-image","text":"There is a PacketCrypt Docker image available, which can be used for announcement mining. To install: Download and install Docker for your operating system. Download the PacketCrypt Docker image: $ docker pull thomasjp0x42/packetcrypt There are also PacketCrypt Docker images built without the portable flag ( --no-portable ) which may increase the performance of the announcement mining while reducing CPU compatibility. One such image (compiled on AMD 5950x) is available at thomasjp0x42/packetcrypt-amd64 . Additionally, for ARM devices such as Raspberry Pi, there is an image available at thomasjp0x42/packetcrypt-arm64 . The arm64 image will also work on Apple silicon such as the M1 and M2 chips. Run the container similar to the commands described in the Begin Announcement Mining section, except replace this part of the command: $ packetcrypt with this command to run PacketCrypt from Docker: $ docker run thomasjp0x42/packetcrypt The final command will be formatted like this: $ docker run thomasjp0x42/packetcrypt ann -p More information can be found at the PacketCrypt DockerHub page","title":"2. Deploy a Docker Image"},{"location":"start_mining/announcement-mining/#3-build-from-source","text":"Building from source will generally offer the best mining performance but requires more technical knowledge than the previous two options. First install rust if you haven't, see: rustup git clone https://github.com/cjdelisle/packetcrypt_rs cd packetcrypt_rs cargo build --release See the PacketCrypt GitHub repository for more detailed instructions.","title":"3. Build From Source"},{"location":"start_mining/announcement-mining/#begin-announcement-mining","text":"Important You cannot mine into the electrum wallet , You can only mine into the Command Line Wallet , the Pkt.World Wallet or the Mac GUI Wallet . To begin mining, you will need the address of your wallet and you will need to choose a pool. There are two ways to configure the announcement miner; by using CLI parameters or by using a configuration file: Using the CLI packetcrypt ann -p pool_1 [pool_2 pool_3 pool_4] [or for windows] packetcrypt.exe ann -p pool_1 [pool_2 pool_3 pool_4] Using a Configuration File A configuration file must be in JSON format. The file can be loaded from the local filesystem or from a web-accessible location. Any CLI parameters used will overide the corresponding settings in the configuration file. Example config.json: { \"payment_addr\": \"\", \"pools\": [ \"pool_1\", \"pool_2\", \"pool_3\", \"pool_4\" ] } packetcrypt ann -c \"./config.json\" [or] packetcrypt ann -c \"https://example.com/config.json\" [or for windows] packetcrypt.exe ann -c \"./config.json\" [or] packetcrypt.exe ann -c \"https://example.com/config.json\" Announcement mining can be done into a single pool or multiple pools. When you announcement mine into multiple pools, you will be paid by each pool that you submit announcements to. pool_1 is the pool running the highest difficulty. If you notice problems, you can test listing the pools in a different order. The number of pools you mine into is at your discretion. If a pool is down or malfunctioning you will notice the pool is not mining at [100%] in your mining feed and you can choose to remove the under-performing or malfunctioning pool.","title":"Begin Announcement Mining"},{"location":"start_mining/announcement-mining/#how-to-install-a-pkt-miner-on-mac","text":"Install the Zulu or CLI PKT Wallet from https://docs.pkt.cash Download the PacketCrypt.pkg for mac Open your Terminal Install Rust by entering in the command: $ curl --proto '=https' --tlsv1.2 -sSf * https://sh.rustup.rs | sh Press 1 to confirm Enter the command: $ sudo install make Enter the command: $ git clone https://github.com/cjdelisle/packetcrypt_rs Enter the command: $ cd packetcrypt_rs Enter the command: $ ~/.cargo/bin/cargo build --release Enter the command: $ ./target/release/packetcrypt ann -p [your PKT Wallet Address] [pool 1] [pool 2] [pool 3] [pool 4]","title":"How to install a PKT miner on Mac"},{"location":"start_mining/announcement-mining/#choosing-pools-to-mine-in","text":"You can mine in as many pools as you have the bandwidth to supply. The same data will be uploaded so your CPU is only used once. Currently the pools which are regularly winning blocks include: Pkteer: http://pool.pkteer.com PKTPool: http://pool.pktpool.io PktWorld: http://pool.pkt.world Zetahash (f.k.a. Srizbi): https://stratum.zetahash.com In general the recommendation is to list the pool with highest difficulty in the first position to ensure your announcements will be accepted, as the standardized policy is to accept announcements of a higher difficulty for pools with a lower base difficulty. In some cases the rewards might vary depending on the pool order regardless of difficulty, subject to custom policies implemented by the respective pools. (Check the relevant channels on Discord for current pool statuses) You should test your daily earnings on each pool to see which one is best. Your mining revenue depends on how much each pool allocates towards announcement miners as well as how much hardware they are using in-house. The pools are winning different blocks and if you mine to just one pool, your not getting any payment from the others when they win a block. It's the same with mining to a pool that is not winning any blocks.","title":"Choosing Pools to mine in"},{"location":"start_mining/announcement-mining/#limiting-system-resource-usage","text":"Limiting the system resources available to Packetcrypt may negatively effect your mining power but can be useful to conserve resources for other processess.","title":"Limiting System Resource Usage"},{"location":"start_mining/announcement-mining/#limit-cpu-usage","text":"Announcement mining is a resource intensive process. By default, Packetcrypt will use 100% of the available CPU resources. CPU usage can be limited by assigning a limited number of threads to packetcrypt using the -t CLI parameter or \"threads\" key if using a configuration file. Example of assigning four (4) threads to Packetcrypt: packetcrypt ann -p pool_1 [pool_2 pool_3 pool_4] -t 4 or { \"threads\" 4 }","title":"Limit CPU Usage"},{"location":"start_mining/announcement-mining/#limit-bandwidth-usage","text":"Bandwidth usage is directly related to two main factors: 1 - Mining difficulty of the primary pool (the first pool listed in Packetcrypt pool configuration) A lower difficulty means higher bandwidth usage 2 - The number of pools mined Packetcrypt will send the same Announcements to each pool mined Bandwidth usage can therefore be limited by selecting a higher difficulty pool as the primary pool and/or by mining to fewer pools.","title":"Limit Bandwidth Usage"},{"location":"start_mining/announcement-mining/#block-mining-running-a-pool","text":"Because each block miner must use as much bandwidth as all of the announcement miners combined , block mining is typically done at the location of the pool. Even a pool operator who wanted to support external block mining would find that the pool itself would need enough upload bandwidth to match all of the block miners - which would be completely untenable. If you are interested in block mining, contact the pool operator and discuss sending hardware to their location. Starting your own pool requires setting up a number of services: pktd node (one or more) - One pktd instance is required for the Master to function, each of the Block Handlers may optionally use separate pktd nodes. Master (one) - This node coordinates all of the others and provides work files and configuration Ann Handler (one or more) - These are high performance nodes which accept announcements from the announcement miners in the network, they also provide announcements to the block miners. As you scale up the amount of bandwidth in the pool, you will need to add more Ann handlers. Block Miner (one or more) - These nodes download announcements from the announcement handlers and use them in the mining process to mine blocks. Block Handlers (one or more) - These nodes receive \"block shares\" from the block miners and submit blocks if Paymaker (1) - This node receives updates from the Ann Handlers and Block Handlers and keeps track of who should be paid. The Paymaker sends configuration to the pktd node which is used by the Master in order to make the pool pay out the announcement and block miners","title":"Block Mining & Running a Pool"},{"location":"start_mining/announcement-mining/#packetcrypt-data-flow","text":"\u2588 Orange: Announcements are sent from the Announcement miners to the Ann Handlers and then to the Block miners \u2588 Blue: Block shares are sent from block miners to Block Handler(s) \u2588 Purple: Winning blocks are submitted by the Block Handler(s) to pktd and the PKT network \u2588 Pink: Block Handlers and Ann Handlers inform Paymaker of work done by announcement and block miners \u2588 Green: Paymaker configures pktd instance to create blocks which pay the people who have been mining \u2588 Brown: Master gets block templates from pktd instance Black dotted line: All nodes request configuration and block templates from Master node","title":"PacketCrypt Data Flow"},{"location":"start_mining/announcement-mining/#more-information-and-packetcrypt-pool-code","text":"The code and documentation for running a pool is available on the C / nodejs version of the PacketCrypt project, the new Rust version only contains Announcement Miner and Announcement Handlers.","title":"More Information and PacketCrypt Pool Code"},{"location":"start_mining/announcement-mining/#announcement-difficulty","text":"PacketCrypt is designed in such a way that a mining pool can double its effective power by: Doubling the total block mining computation effort Doubling the total announcement mining computation effort, or Doubling the amount of bandwidth between announcement miners and the pool The way that a pool operator limits the amount of bandwidth flowing into the pool, to prevent overloading of the network, is by setting what is known as the announcement difficulty . The announcement difficulty for a pool specifies how much work must be done on an announcement in order for the announcement to be accepted and paid out by the pool. Announcement difficulty serves to slow down the announcement miners to protect the pool's network. In general, doubling the announcement difficulty will halve the amount of bandwidth used by the pool and will also halve the pool's overall mining power, with a limit that setting the announcement difficulty lower than 2 does not bring any additional value. To explain why it works like this, we need to examine the PacketCrypt algorithm rules and the in particular how the block mining software decides which announcements to use when attempting to mine a block.","title":"Announcement Difficulty"},{"location":"start_mining/announcement-mining/#announcement-set-selection","text":"PacketCrypt algorithm allows block miners to perform less work if they are able to prove that they had a certain number of \"high value\" announcements in memory at the time of mining, the exact ratio of actual work a block miner must do to the amount of work the PKT blockchain requires is called the power multipler . For a block miner seeking to optimize their power multiplier, every announcement has a particular level of utility value which is based on the amount of work that was done by the announcement miner (announcement difficulty) and how old the announcement is. We call this the effective difficulty . The effective difficulty of an announcement starts off as the actual difficulty of the work done to mine it and then decreases by half every block-period until it is less than 1 and the announcement is no longer usable for mining. The block mining software selects a subset of announcements which which will give it the best power multiplier based on the PacketCrypt algorithm: power_multiplier = min(effective_difficulty) * ann_count ** 2 The min(effective_difficulty) is the effective difficulty of the \"least valuable\" announcement that is being mined with. Lets assume that announcement miners are providing a steady supply of 1000 announcements per block-period and all announcements have an initial announcement difficulty of 128. The block mining software can choose to mine with 1000 announcements at 128 effective difficulty, or with 2000 announcements at 64 effective difficulty, or with 3000 announcements at 32 effective difficulty and so on. The best choice is to use the previous three block periods which provides a power multiplier that is 225% higher than that of using just the most recent 1 period worth of announcements. This curve is the same no matter what difficulty we are starting with.","title":"Announcement Set Selection"},{"location":"start_mining/announcement-mining/#optimal-difficulty-curve","text":"Knowing that the optimal announcement set is all of those announcements mined over the past 3 block periods, we can compute the overall power of a pool as the announcement difficulty is raised. At announcement difficulty 1, announcements cannot be used for more than 1 block, but if we imagine that the announcement mining community can produce 1000 announcements per block at difficulty 1 then we can reason that the power multiplier will be 1000 ** 2 or 1 million. At difficulty 2 we can expect the announcement miners will produce 500 announcements per block period but since 2 block periods can be used, the power multiplier is the same. At difficulty 4, the announcement miners will produce 250 announcements per block period and they will be valid for 3 block periods making the power multiplier 750 ** 2 or 562,500. From here, the power output of the power multiplier of the optimal announcement set halves for each doubling of the announcement difficulty, making the optimal difficulty 2 .","title":"Optimal Difficulty Curve"},{"location":"start_mining/announcement-mining/#faq-for-ann-miners","text":"","title":"FAQ for ANN Miners"},{"location":"start_mining/announcement-mining/#what-does-overflow-mean","text":"When the ann handler receives an announcement, it puts it into a queue, when the queue fills up it responds overflow immediately. The queue can become long, so you may receive \"operation timed out\" you're still being paid, when you receive \"overflow\" you are not being paid. Unfortunately, you may also receive \"operation timed out\" because the handler is unresponsive, it's not obvious which is the reason from looking at the logs. For example, what you will see in the AnnMiner Logs: 1618394538 INFO annmine.rs:519 467 Ke/s 28.56Mb/s overflow: [0, 0, 3072, 0] uploading: [0, 0, 17632, 0] accept/reject: [26932/0, 0/0, 4856/0, 796/0] - goodrate: [100%, 100%, 61%, 100%] 467 Ke/s 467 kilo-encryptions (thousands of encryptions) per second of mining power. 28.56Mb/s Total upload bandwidth (to all pools - combined) overflow: [0, 0, 3072, 0] Overflowed the internal queue of the ann miner, before it was even able to upload to the pool, one number for each pool you're mining to. 3072 Number of anns which are not uploaded to pool #3. uploading [0, 0, 17632, 0] Number of anns currently in-flight in active http requests, again 3rd pool is a problem, others are doing well (in this example). accept/reject [26932/0, 0/0, 4856/0, 796/0] Anns accepted/rejected by each pool, these numbers are based on the previous 10 seconds, pool #2 is giving a zero accepted which might be an issue, keep watching the next message 10 seconds later for another update. goodrate [100%, 100%, 61%, 100%] Goodrate = number of anns accepted divided by number of anns produced.","title":"What does overflow mean?"},{"location":"start_mining/intro/","text":"Intro to PKT Mining \u00b6 DPKT is mined using the novel PacketCrypt bandwidth-hard mining algorithm which requires bandwidth to mine. Since PacketCrypt is a bandwidth hard proof of work, this means it requires lots of bandwidth to mine in combination with CPU power. Miners collaborate with one another by sending small messages (called Announcements) and the sending of these messages requires bandwidth. Miners get an advantage by working together. As more people mine PacketCrypt, they will need to invest in more network infrastructure which will become useful later on for making the internet more accessible, as well as operating VPN and empowering people to safely share wifi with their neighbors. In order to mine PKT you must first set up a PKT Wallet. You must use a PKT wallet that is compatible with mining. A mining wallet is required because PKT miners get paid every 60 seconds. As a result of getting paid 1,440 times per day (60 minutes per hour * 24 hours per day) each PKT wallet must have the ability to scale in order to support the amount of mining transactions. Learn how to set up a PKT Wallet [here]. Miners who are working in collaboration with one another are members of a mining pool, therefore all mining of PacketCrypt is done in pools. Mining PKT utilizes 2 distinct stages: announcement mining and block mining. Announcement Mining - Using your CPU to create Announcements Announcement Mining creates a small (1KB) message that is difficult to compress and proves work was done. Announcements are transmitted to and collected by block miners to form blocks. This simulates the transmission of data across the network. Announcement miners must maximize their CPU processing power and bandwidth upload speed for the highest yields. Announcement mining can be done from nearly any device that has a CPU processor and access to bandwidth. To learn more about announcement mining, click [here]. Block Mining - Collecting Announcements from Announcement Miners and using them to mine blocks. Block mining involves setting up a mining pool. PKT mining pools require expert networking experience, significant hardware and bandwidth infrastructure with a minimum of 25 gbps of bandwidth ingest. Block miners gain efficiency on the difficulty of the work, based on the amount of new announcements they have in memory at the time of mining. This incentivizes mining pools to pay announcement miners to supply announcements. Block mining is typically done at the mining pool's datacenter.","title":"Intro to PKT Mining"},{"location":"start_mining/intro/#intro-to-pkt-mining","text":"DPKT is mined using the novel PacketCrypt bandwidth-hard mining algorithm which requires bandwidth to mine. Since PacketCrypt is a bandwidth hard proof of work, this means it requires lots of bandwidth to mine in combination with CPU power. Miners collaborate with one another by sending small messages (called Announcements) and the sending of these messages requires bandwidth. Miners get an advantage by working together. As more people mine PacketCrypt, they will need to invest in more network infrastructure which will become useful later on for making the internet more accessible, as well as operating VPN and empowering people to safely share wifi with their neighbors. In order to mine PKT you must first set up a PKT Wallet. You must use a PKT wallet that is compatible with mining. A mining wallet is required because PKT miners get paid every 60 seconds. As a result of getting paid 1,440 times per day (60 minutes per hour * 24 hours per day) each PKT wallet must have the ability to scale in order to support the amount of mining transactions. Learn how to set up a PKT Wallet [here]. Miners who are working in collaboration with one another are members of a mining pool, therefore all mining of PacketCrypt is done in pools. Mining PKT utilizes 2 distinct stages: announcement mining and block mining. Announcement Mining - Using your CPU to create Announcements Announcement Mining creates a small (1KB) message that is difficult to compress and proves work was done. Announcements are transmitted to and collected by block miners to form blocks. This simulates the transmission of data across the network. Announcement miners must maximize their CPU processing power and bandwidth upload speed for the highest yields. Announcement mining can be done from nearly any device that has a CPU processor and access to bandwidth. To learn more about announcement mining, click [here]. Block Mining - Collecting Announcements from Announcement Miners and using them to mine blocks. Block mining involves setting up a mining pool. PKT mining pools require expert networking experience, significant hardware and bandwidth infrastructure with a minimum of 25 gbps of bandwidth ingest. Block miners gain efficiency on the difficulty of the work, based on the amount of new announcements they have in memory at the time of mining. This incentivizes mining pools to pay announcement miners to supply announcements. Block mining is typically done at the mining pool's datacenter.","title":"Intro to PKT Mining"},{"location":"start_mining/pkt-mining-pool/","text":"How to Setup a PKT Mining Pool \u00b6 Block Mining - Collecting Announcements from Announcement Miners and using them to mine blocks. Block mining involves setting up a mining pool. PKT mining pools require expert networking experience, significant hardware and bandwidth infrastructure with a minimum of 25 gbps of bandwidth ingest. Block miners gain efficiency on the difficulty of the work, based on the amount of new announcements they have in memory at the time of mining. This incentivizes mining pools to pay announcement miners to supply announcements. Block mining is typically done at the mining pool's datacenter. Mining \u00b6 PacketCrypt is a bandwidth hard proof of work , this means it requires lots of bandwidth to mine. Miners collaborate with one another by sending small messages (called Announcements ) and the sending of these messages requires a large amount of bandwidth . Miners who are working in collaboration with one another are members of a mining pool, therefore all mining of PacketCrypt is done in pools. PacketCrypt mining is split into two distinct stages: Announcement Mining - Using your CPU to create Announcements Block Mining - Collecting Announcements from Announcement Miners and using them to mine blocks Block mining is typically done at the mining pool's datacenter, however Announcement mining can be done from anywhere. How to Announcement mine \u00b6 There are a number of options available when it comes to installing the PacketCrpyt announcement miner. Choose whichever best suits your technical ability: 1. Install a Pre-built Binary \u00b6 Pre-built packetcrypt binaries (for linux) or installation packages (for macos) and archives (for windows) can be downloaded from packetcrypt releases page . For windows , download the zip archive suffixed with -windows.zip and extract its content. For macos , download the package suffixed with .pkg and click on its icon in the Finder for installation. For linux , download the binary suffixed with -linux_amd64 and rename it packetcrypt . If you're on Arch linux or Manjaro, you can install the packetcrypt AUR package 2. Deploy a Docker Image \u00b6 There is a PacketCrypt Docker image available, which can be used for announcement mining. To install: Download and install Docker for your operating system. Download the PacketCrypt Docker image: $ docker pull thomasjp0x42/packetcrypt There are also PacketCrypt Docker images built without the portable flag ( --no-portable ) which may increase the performance of the announcement mining while reducing CPU compatibility. One such image (compiled on AMD 5950x) is available at thomasjp0x42/packetcrypt-amd64 . Additionally, for ARM devices such as Raspberry Pi, there is an image available at thomasjp0x42/packetcrypt-arm64 . The arm64 image will also work on Apple silicon such as the M1 and M2 chips. Run the container similar to the commands described in the Begin Announcement Mining section, except replace this part of the command: $ packetcrypt with this command to run PacketCrypt from Docker: $ docker run thomasjp0x42/packetcrypt The final command will be formatted like this: $ docker run thomasjp0x42/packetcrypt ann -p More information can be found at the PacketCrypt DockerHub page 3. Build From Source \u00b6 Building from source will generally offer the best mining performance but requires more technical knowledge than the previous two options. First install rust if you haven't, see: rustup git clone https://github.com/cjdelisle/packetcrypt_rs cd packetcrypt_rs cargo build --release See the PacketCrypt GitHub repository for more detailed instructions. Begin Announcement Mining \u00b6 Important You cannot mine into the electrum wallet , You can only mine into the Command Line Wallet , the Pkt.World Wallet or the Mac GUI Wallet . To begin mining, you will need the address of your wallet and you will need to choose a pool. There are two ways to configure the announcement miner; by using CLI parameters or by using a configuration file: Using the CLI packetcrypt ann -p pool_1 [pool_2 pool_3 pool_4] [or for windows] packetcrypt.exe ann -p pool_1 [pool_2 pool_3 pool_4] Using a Configuration File A configuration file must be in JSON format. The file can be loaded from the local filesystem or from a web-accessible location. Any CLI parameters used will overide the corresponding settings in the configuration file. Example config.json: { \"payment_addr\": \"\", \"pools\": [ \"pool_1\", \"pool_2\", \"pool_3\", \"pool_4\" ] } packetcrypt ann -c \"./config.json\" [or] packetcrypt ann -c \"https://example.com/config.json\" [or for windows] packetcrypt.exe ann -c \"./config.json\" [or] packetcrypt.exe ann -c \"https://example.com/config.json\" Announcement mining can be done into a single pool or multiple pools. When you announcement mine into multiple pools, you will be paid by each pool that you submit announcements to. pool_1 is the pool running the highest difficulty. If you notice problems, you can test listing the pools in a different order. The number of pools you mine into is at your discretion. If a pool is down or malfunctioning you will notice the pool is not mining at [100%] in your mining feed and you can choose to remove the under-performing or malfunctioning pool. How to install a PKT miner on Mac \u00b6 Install the Zulu or CLI PKT Wallet from https://docs.pkt.cash Download the PacketCrypt.pkg for mac Open your Terminal Install Rust by entering in the command: $ curl --proto '=https' --tlsv1.2 -sSf * https://sh.rustup.rs | sh Press 1 to confirm Enter the command: $ sudo install make Enter the command: $ git clone https://github.com/cjdelisle/packetcrypt_rs Enter the command: $ cd packetcrypt_rs Enter the command: $ ~/.cargo/bin/cargo build --release Enter the command: $ ./target/release/packetcrypt ann -p [your PKT Wallet Address] [pool 1] [pool 2] [pool 3] [pool 4] Choosing Pools to mine in \u00b6 You can mine in as many pools as you have the bandwidth to supply. The same data will be uploaded so your CPU is only used once. Currently the pools which are regularly winning blocks include: Pkteer: http://pool.pkteer.com PKTPool: http://pool.pktpool.io PktWorld: http://pool.pkt.world Zetahash (f.k.a. Srizbi): https://stratum.zetahash.com In general the recommendation is to list the pool with highest difficulty in the first position to ensure your announcements will be accepted, as the standardized policy is to accept announcements of a higher difficulty for pools with a lower base difficulty. In some cases the rewards might vary depending on the pool order regardless of difficulty, subject to custom policies implemented by the respective pools. (Check the relevant channels on Discord for current pool statuses) You should test your daily earnings on each pool to see which one is best. Your mining revenue depends on how much each pool allocates towards announcement miners as well as how much hardware they are using in-house. The pools are winning different blocks and if you mine to just one pool, your not getting any payment from the others when they win a block. It's the same with mining to a pool that is not winning any blocks. Limiting System Resource Usage \u00b6 Limiting the system resources available to Packetcrypt may negatively effect your mining power but can be useful to conserve resources for other processess. Limit CPU Usage \u00b6 Announcement mining is a resource intensive process. By default, Packetcrypt will use 100% of the available CPU resources. CPU usage can be limited by assigning a limited number of threads to packetcrypt using the -t CLI parameter or \"threads\" key if using a configuration file. Example of assigning four (4) threads to Packetcrypt: packetcrypt ann -p pool_1 [pool_2 pool_3 pool_4] -t 4 or { \"threads\" 4 } Limit Bandwidth Usage \u00b6 Bandwidth usage is directly related to two main factors: 1 - Mining difficulty of the primary pool (the first pool listed in Packetcrypt pool configuration) A lower difficulty means higher bandwidth usage 2 - The number of pools mined Packetcrypt will send the same Announcements to each pool mined Bandwidth usage can therefore be limited by selecting a higher difficulty pool as the primary pool and/or by mining to fewer pools. Block Mining & Running a Pool \u00b6 Because each block miner must use as much bandwidth as all of the announcement miners combined , block mining is typically done at the location of the pool. Even a pool operator who wanted to support external block mining would find that the pool itself would need enough upload bandwidth to match all of the block miners - which would be completely untenable. If you are interested in block mining, contact the pool operator and discuss sending hardware to their location. Starting your own pool requires setting up a number of services: pktd node (one or more) - One pktd instance is required for the Master to function, each of the Block Handlers may optionally use separate pktd nodes. Master (one) - This node coordinates all of the others and provides work files and configuration Ann Handler (one or more) - These are high performance nodes which accept announcements from the announcement miners in the network, they also provide announcements to the block miners. As you scale up the amount of bandwidth in the pool, you will need to add more Ann handlers. Block Miner (one or more) - These nodes download announcements from the announcement handlers and use them in the mining process to mine blocks. Block Handlers (one or more) - These nodes receive \"block shares\" from the block miners and submit blocks if Paymaker (1) - This node receives updates from the Ann Handlers and Block Handlers and keeps track of who should be paid. The Paymaker sends configuration to the pktd node which is used by the Master in order to make the pool pay out the announcement and block miners PacketCrypt Data Flow \u00b6 \u2588 Orange: Announcements are sent from the Announcement miners to the Ann Handlers and then to the Block miners \u2588 Blue: Block shares are sent from block miners to Block Handler(s) \u2588 Purple: Winning blocks are submitted by the Block Handler(s) to pktd and the PKT network \u2588 Pink: Block Handlers and Ann Handlers inform Paymaker of work done by announcement and block miners \u2588 Green: Paymaker configures pktd instance to create blocks which pay the people who have been mining \u2588 Brown: Master gets block templates from pktd instance Black dotted line: All nodes request configuration and block templates from Master node More Information and PacketCrypt Pool Code \u00b6 The code and documentation for running a pool is available on the C / nodejs version of the PacketCrypt project, the new Rust version only contains Announcement Miner and Announcement Handlers. Announcement Difficulty \u00b6 PacketCrypt is designed in such a way that a mining pool can double its effective power by: Doubling the total block mining computation effort Doubling the total announcement mining computation effort, or Doubling the amount of bandwidth between announcement miners and the pool The way that a pool operator limits the amount of bandwidth flowing into the pool, to prevent overloading of the network, is by setting what is known as the announcement difficulty . The announcement difficulty for a pool specifies how much work must be done on an announcement in order for the announcement to be accepted and paid out by the pool. Announcement difficulty serves to slow down the announcement miners to protect the pool's network. In general, doubling the announcement difficulty will halve the amount of bandwidth used by the pool and will also halve the pool's overall mining power, with a limit that setting the announcement difficulty lower than 2 does not bring any additional value. To explain why it works like this, we need to examine the PacketCrypt algorithm rules and the in particular how the block mining software decides which announcements to use when attempting to mine a block. Announcement Set Selection \u00b6 PacketCrypt algorithm allows block miners to perform less work if they are able to prove that they had a certain number of \"high value\" announcements in memory at the time of mining, the exact ratio of actual work a block miner must do to the amount of work the PKT blockchain requires is called the power multipler . For a block miner seeking to optimize their power multiplier, every announcement has a particular level of utility value which is based on the amount of work that was done by the announcement miner (announcement difficulty) and how old the announcement is. We call this the effective difficulty . The effective difficulty of an announcement starts off as the actual difficulty of the work done to mine it and then decreases by half every block-period until it is less than 1 and the announcement is no longer usable for mining. The block mining software selects a subset of announcements which which will give it the best power multiplier based on the PacketCrypt algorithm: power_multiplier = min(effective_difficulty) * ann_count ** 2 The min(effective_difficulty) is the effective difficulty of the \"least valuable\" announcement that is being mined with. Lets assume that announcement miners are providing a steady supply of 1000 announcements per block-period and all announcements have an initial announcement difficulty of 128. The block mining software can choose to mine with 1000 announcements at 128 effective difficulty, or with 2000 announcements at 64 effective difficulty, or with 3000 announcements at 32 effective difficulty and so on. The best choice is to use the previous three block periods which provides a power multiplier that is 225% higher than that of using just the most recent 1 period worth of announcements. This curve is the same no matter what difficulty we are starting with. Optimal Difficulty Curve \u00b6 Knowing that the optimal announcement set is all of those announcements mined over the past 3 block periods, we can compute the overall power of a pool as the announcement difficulty is raised. At announcement difficulty 1, announcements cannot be used for more than 1 block, but if we imagine that the announcement mining community can produce 1000 announcements per block at difficulty 1 then we can reason that the power multiplier will be 1000 ** 2 or 1 million. At difficulty 2 we can expect the announcement miners will produce 500 announcements per block period but since 2 block periods can be used, the power multiplier is the same. At difficulty 4, the announcement miners will produce 250 announcements per block period and they will be valid for 3 block periods making the power multiplier 750 ** 2 or 562,500. From here, the power output of the power multiplier of the optimal announcement set halves for each doubling of the announcement difficulty, making the optimal difficulty 2 . FAQ for ANN Miners \u00b6 What does overflow mean? \u00b6 When the ann handler receives an announcement, it puts it into a queue, when the queue fills up it responds overflow immediately. The queue can become long, so you may receive \"operation timed out\" you're still being paid, when you receive \"overflow\" you are not being paid. Unfortunately, you may also receive \"operation timed out\" because the handler is unresponsive, it's not obvious which is the reason from looking at the logs. For example, what you will see in the AnnMiner Logs: 1618394538 INFO annmine.rs:519 467 Ke/s 28.56Mb/s overflow: [0, 0, 3072, 0] uploading: [0, 0, 17632, 0] accept/reject: [26932/0, 0/0, 4856/0, 796/0] - goodrate: [100%, 100%, 61%, 100%] 467 Ke/s 467 kilo-encryptions (thousands of encryptions) per second of mining power. 28.56Mb/s Total upload bandwidth (to all pools - combined) overflow: [0, 0, 3072, 0] Overflowed the internal queue of the ann miner, before it was even able to upload to the pool, one number for each pool you're mining to. 3072 Number of anns which are not uploaded to pool #3. uploading [0, 0, 17632, 0] Number of anns currently in-flight in active http requests, again 3rd pool is a problem, others are doing well (in this example). accept/reject [26932/0, 0/0, 4856/0, 796/0] Anns accepted/rejected by each pool, these numbers are based on the previous 10 seconds, pool #2 is giving a zero accepted which might be an issue, keep watching the next message 10 seconds later for another update. goodrate [100%, 100%, 61%, 100%] Goodrate = number of anns accepted divided by number of anns produced. Setting up a Pool \u00b6 Expectations \u00b6 General knowledge of Linux General knowledge of git General knowledge of networking General knowledge of blockchain Access to at least 6 machines running Ubuntu 18.04 LTS or 20.04 LTS , to deploy the following services. Machine 1 : PKT node Machine 2 : Master, Paymaker & Blkhander Machine 3 : AnnHandler Machine 4 : AnnHandler Machine 5 : BlkMiner Machine 6 : BlkMiner Note: It can be done all on a single machine, you just need to pay attention to ports etc. As of June 2022, the network difficulty is high, and given that half of the work is done at pool premises, it's recommended to run at least a dozen BlkMiner machines, with a significant (768GB recommended) ammount of RAM. Block mining & running a pool \u00b6 Starting your own pool requires setting up a number of services: pktd node (one or more) - One pktd instance is required for the Master to function, each of the Block Handlers may optionally use separate pktd nodes. Master (one) - This node coordinates all of the others and provides work files and configuration Ann Handler (two or more) - These are nodes which accept announcements from the announcement miners in the network, they also provide announcements to the block miners. As you scale up the amount of bandwidth in the pool, you will need to add more Ann handlers. Block Miner (two or more) - These high performance nodes download announcements from the announcement handlers and use them in the mining process to mine blocks. Block Handlers (one or more) - These nodes receive \"block shares\" from the block miners and submit blocks if they validate the share Paymaker (one) - This node receives updates from the Ann Handlers and Block Handlers and keeps track of who should be paid. The Paymaker sends configuration to the pktd node which is used by the Master in order to make the pool pay out the announcement and block miners General Information \u00b6 Repository Information: \u00b6 The following repositories hold the required programs to run a pool: Repository Tools packetcrypt_rs: https://github.com/cjdelisle/packetcrypt_rs AnnHandler, Blkminer, AnnMiner PacketCrypt: https://github.com/cjdelisle/PacketCrypt/ Master, Paymaker, BlkHandler pktd: https://github.com/pkt-cash/pktd pktd Assumed network Ranges: \u00b6 In this guide we have two separate networks, the public network (198.51.100.0/24), and local network (10.0.16.0/24) to connect AnnHandlers and BlkMiner. Machine Public Network IP Private Network IP Machine 1 198.51.100.1 10.0.16.1 Machine 2 198.51.100.2 10.0.16.2 Machine 3 198.51.100.3 10.0.16.3 Machine 4 198.51.100.4 10.0.16.4 Machine 5 X 10.0.16.5 Machine 6 X 10.0.16.6 Assumed Port Ranges: \u00b6 Service Machine Port/Port Ranges Master Machine 2 8080 Paymaker Machine 2 8081 BlkHandlers Machine 2 8100-8200 AnnHandlers Machine 3 & 4 80 Installation \u00b6 Machine 1 \u00b6 PKTD node: \u00b6 150GB of storage is required at a minimum to run the pktd node. Recommended size is around 250GB of NVMe storage. Install Golang sudo add-apt-repository ppa:longsleep/golang-backports sudo apt update sudo apt install golang-go Install git sudo apt install git Install the pktd node git clone --branch develop https://github.com/pkt-cash/pktd cd pktd ./do The output should show the following: Everything looks good - use ./bin/pktd to launch Machine 2 \u00b6 Master | Paymaker | BlkHandler: \u00b6 Install the required tools: cd ~ sudo add-apt-repository universe sudo apt install git sudo apt install make sudo apt install npm sudo npm cache clean -f sudo npm install -g n sudo n stable Restart your shell ### Add here how to get latest stable version of node Clone the source code: git clone --branch master https://github.com/cjdelisle/PacketCrypt Build the PacketCrypt code cd PacketCrypt npm install Machine 4 - 6 \u00b6 BlkMiner | AnnHandler | AnnMiner: \u00b6 Install the Required tools: sudo apt install gcc git sudo apt install curl curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh Clone packetcrypt_rs git clone --branch develop https://github.com/cjdelisle/packetcrypt_rs Compile PacketCrypt cd packetcrypt_rs ~/.cargo/bin/cargo build --release --features jemalloc Config of pool.js \u00b6 Information: pool.js is located at: ~/PacketCrypt/pool.example.js You need to edit this file, then run: cp ~/PacketCrypt/pool.example.js ~/PacketCrypt/pool.js config.privateSeed \u00b6 Signing of announcements is rarely used, it breaks people mining into multiple pools, and you should set it to null unless \"you know what you're doing\" This seed is used for deriving keys which will be used for signing announcements. Setting this value to an alphanumeric value e.g oHk8TXpbtRRZGtaYYMnIFAzYMrVh6vA8XzKWWXcKbzCThuFLIJ234bHN5peddQFzR2TtQyo58gcFRP7bKg9BeXZirSqp9gVpjBWp In general, this value should be set to the null, as signing announcements is rarely used, and breaks Announcement mining with multiple pools if you have your pool externally accessable, and should only be set if you have a strong understanding and knowledge of what you are doing. config.privateSeed = null If you aren't bothered by, or don't require your announcements to be signed . config.paymakerHttpPasswd \u00b6 Anyone who has this password can make http posts to the paymaker (claim that shares were won) You should make this random and also firewall the paymaker from the public. The upload will be done using Authorization Basic with a username of \"x\" and this as the password config.paymakerHttpPasswd = 'anyone with this password can post results to the paymaker'; You can put the paymaker behind an http proxy if you wish. config.masterUrl \u00b6 This is used by the paymaker and block handler when running them with pool.js, it is used to resolve where the master is. You can either set this as a locally host or put your master behind a nginx proxy config.masterUrl = 'http://localhost:8080'; or if you have your instance public, and you want to have it be resolvable publically, replace the url with your own. config.masterUrl = 'http://pool.pktpool.io'; config.rpc \u00b6 The username and password set here, should be the same username and password used at the end of this guide for when you configure the pktd service. user: 'x', pass: 'x', config.annHandlers \u00b6 Information: config.annHandlers is a list of json object, with an object for each individual annhandler you would like to run, each ann handler will require it's own individual port. As the AnnHandler will be run on the same machine as the BlkMiner you need to make sure there are no over-lapping port bindings. If you plan to allow external AnnMiners (AnnMiners not on your LAN to mine against your pool, the url's placed in the AnnHandlers list, should be externally resolvable. The address that is advertized for accessing this ann handler (external address) If running locally use: url: 'http://10.0.16.3:8081','http://10.0.16.4:8081' If allowing external annminers use a resolved address such as: url: 'http://ann1.pktpool.io','http://ann2.pktpool.io' Replace the url with your own. config.blkHandlers \u00b6 Information: config.blkHandlers is a list of json object, with an object for each individual annhandler you would like to run, each ann handler will require it's own individual port. BlockHandlers are low-effort high-volume single-threaded workers. What address should be advertized for accessing this BlkHander, again make sure there are no overlapping ports. If you are wanting to support external blockminers, this address should be externally resolvable url: 'http://localhost:8100', This is the port that the blkHandler will bind to. port: 8082, This is the host that the blkHandler will bind to. host: '::', This is how many requests a blkHandler can queue before the handler starts rejecting requests maxConnections: 50, root: config config.master \u00b6 Which port to run the master on port: 8080, What address to bind to, set to localhost if proxying host: '::', Minimum work for an announcement. This number is effectively a bandwidth divisor, every time you double this number you will reduce your bandwidth by a factor of two. annMinWork: Util.annWorkToTarget(128), Average number of shares per block, reducing this number will reduce load on your block handlers, but increasing it will allow payment to be spread more evenly between block miners. This wants to be set to a higher number than one, for the purpose of constantly testing that the block miners are making valid shares. You may have a block miner sitting for hours without a share and then when it wins one, it can become invalid because of misconfiguration shareWorkDivisor: 4, Which versions of announcements we will accept annVersions: [1], Request that ann miners mine announcements that are this many blocks old. Announcements contain a commitment of the most recent block hash but they need 3 blocks to \"mature\" before they can be used The point of this is so that PacketCrypt is about bandwidth, not latency. But there is a risk: If there is a surge then you are going to be starved for announcements When you are starved, you will have few usable anns which causes a slow-down in mining and the announcements which are being submitted are not usable. When you win a few blocks, those announcements become usable and you surge, which causes you to go back into starvation again. This should be set to either: 0 Which means the announcements you are receiving are used instantly 3 Which means you are waiting for the announcements to mature before using them. If running your own AnnMiners, it is advisable to set this to 0, and add the --mineold 3 to some of your AnnMiner startups on the CLI. This helps to keep a balance between keeping your pool as powerful as possible, along with having AnnMiners to help out in the case of a starvation mineOldAnns: 0, config.payMaker \u00b6 How the miners should access the paymaker (external address), replace the url with your own. url: 'pool.pktpool.io', Which port to run the paymaker on port: 8081, What address to bind to, set to localhost if proxying host: '::', Seconds between sending updates to pktd. If this set to zero, the payMaker will accept log uploads but will not send any changes of payout data to pktd. updateCycle: 120, updateCycle: 0 to disable How many seconds backward to keep history in memory historyDepth: 60 * 60 * 24 * 30, Maximum number of simultanious connections to accept before sending 500 errors maxConnections: 200, annCompressor \u00b6 Store data in 1 minute aggregations timespanMs: 1000 * 60, Allow data to be submitted to any of the last 10 aggregations slotsToKeepEvents: 10, What fraction of the payout to pay to block miners (the rest will be paid to ann miners) ( Pay per last N shares ) blockPayoutFraction: 0.5, What percent of the total winnings should be taken for pool management poolFee: 0.40, The address which should be paid the pool fee poolFeeAddress: \"pkt1qyc9dkhca7uc84zn3vlgd0h0fxr3twwn34qgeqe\", This constant will affect how far back into history we pay our announcement miners ( Pay per last N shares ) pplnsAnnConstantX: 0.125, This constant will affect how far back into history we pay our block miners ( Pay per last N shares ) pplnsBlkConstantX: 2, When there are not enough shares to fairly spread out the winnings, pay what is left over to this address. defaultAddress: \"pkt1q6hqsqhqdgqfd8t3xwgceulu7k9d9w5t2amath0qxyfjlvl3s3u4sjza2g2\", When something goes wrong, direct pktd to send all coins here, if this is different from the defaultAddress then it is possible to account for and pay out to the miners later when the problem is fixed. errorAddress: \"pkt1q6hqsqhqdgqfd8t3xwgceulu7k9d9w5t2amath0qxyfjlvl3s3u4sjza2g2\", Config of pool.toml \u00b6 Information: - pool.example.toml is located at: ~/packetcrypt_rs/pool.example.toml - You need to edit this file, then run: ~/packetcrypt_rs/pool.example.toml ~/packetcrypt_rs/pool.toml Password used by your paymaker to post logs for payment, the same as config.paymakerHttpPasswd paymaker_http_password = \"you'll want this to be a secret\" URL of the pool master, used for getting configuration and work, the same as: Replace the url with your own. master_url = \"http://pool.pktpool.io\" ann_handler.ah* \u00b6 You can have multiple ann_handlers, you can do this by defining each one such as: [ann_handler.ah0] \"parameters\" [ann_handler.ah1] \"parameters\" These can all be in a single file to be used by each annhandler, when starting the annhandlers, you would start them with on each respective machine: packetcrypt ah --config /path/to/config.toml ah0 packetcrypt ah --config /path/to/config.toml ah1 Number of threads to dedicate to the AnnHandler num_workers = 8 Length of the input queue, keeping this low will create back-pressure and prevent miners from posting too many announcements when the server is in fact overloaded input_queue_len = 256 The public url of the annhandler, this should match what is set in your pool.js Replace the url with your own. public_url = \"http://ann1.pktpool.io/submit\" Bind to this port bind_port = \"198.51.100.3:80\" Bind this port to the sprayer component bind_pvt = \"10.0.16.3:6666\" Set sprayer spray_at = [\"239.0.1.1:6667\"] spray_workers = 8 For Machine 3 you should end up with something like this [ann_handler.ah0] block_miner_passwd = \"no one steals my anns\" skip_check_chance = 0 num_workers = 8 input_queue_len = 512 public_url = \"http://ann1.pktpool.io/submit\" bind_pub = \"198.51.100.3:80\" bind_pvt = \"10.0.16.3:6666\" spray_at = [\"239.0.1.1:6667\"] spray_workers = 8 subscribe_to = [] files_to_keep = 512 The same logic should be followed for Machine 4 and other handlers you may have. NOTE: To bind low ports with non-root user run: \u00b6 sudo setcap CAP_NET_BIND_SERVICE=+eip $(which packetcrypt) Running Manually \u00b6 Machine 1 \u00b6 Information: These tasks need to be run in the order they are presented PKTD needs to have downloaded the full chain first, you will know when the node is upto date when height is equal to the current block on the explorer It can take 12+ hours to fully sync to the current block height PKTD \u00b6 --rpcuser and --rpcpass should match the values set in pool.js under config.rpc ./pktd/bin/pktd --rpcuser=XXX --rpcpass=XXX --miningaddr Machine 2 \u00b6 Master \u00b6 node ./pool.js --master Paymaker \u00b6 node ./pool.js --payMaker BlkHandler(s) \u00b6 Launch the BlkHandler nodes, specify --blk0 for the first BlkHandler , --blk1 for the second, and so forth cd PacketCrypt node ./pool.js --blk0 node ./pool.js --blk1 Machine 3 \u00b6 AnnHandler \u00b6 cd packetcrypt_rs ./target/release/packetcrypt ah --config /path/to/pool.toml ah0 Machine 4 \u00b6 AnnHandler \u00b6 cd packetcrypt_rs ./targer/release/packetcrypt ah --config /path/to/pool.toml ah1 Machine 5 and 6 \u00b6 BlkMiner \u00b6 --threads is the number of threads you want to dedicate to the Blkminer, the default is to use all available threads. --paymentaddr is the wallet you want your coins to be mined into, it is advisable to not use the electrum wallet for this. --memorysizemb is how much RAM you are allocating to block mining, Ideally you want to set as much as you can. is the masterUrl of your pool cd packetcrypt_rs ./target/release/packetcrypt blk --paymentaddr --threads 80 --memorysizemb 665000 --handlerpass NoOneStealsMyAnns --subscribe 10.0.16.3:6666 --bind 0.0.0.0:6667 --mcast 239.0.1.1 NGINX Setup (For allowing external AnnMining) \u00b6 Machine 2 \u00b6 Update system and install Nginx sudo apt update sudo apt install nginx Unlink default nginx site unlink /etc/nginx/sites-enabled/default cd /etc/nginx/sites-available Create and edit the reverse-proxy.conf file vim reverse-proxy.conf The config for the services: server { listen 80; listen [::]:80; server_name ; location / { proxy_pass http://localhost:8080/; } } server { listen 80; listen [::]:80; server_name paymaker.pktpool.io; location / { proxy_pass http://localhost:8081/; } } Link new file to sites-enabled ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/reverse-proxy.conf Remove default config rm default Check reverse proxy config is correct nginx -t Reload nginx to pick up config changes. sudo systemctl reload nginx","title":"How to Setup a PKT Mining Pool"},{"location":"start_mining/pkt-mining-pool/#how-to-setup-a-pkt-mining-pool","text":"Block Mining - Collecting Announcements from Announcement Miners and using them to mine blocks. Block mining involves setting up a mining pool. PKT mining pools require expert networking experience, significant hardware and bandwidth infrastructure with a minimum of 25 gbps of bandwidth ingest. Block miners gain efficiency on the difficulty of the work, based on the amount of new announcements they have in memory at the time of mining. This incentivizes mining pools to pay announcement miners to supply announcements. Block mining is typically done at the mining pool's datacenter.","title":"How to Setup a PKT Mining Pool"},{"location":"start_mining/pkt-mining-pool/#mining","text":"PacketCrypt is a bandwidth hard proof of work , this means it requires lots of bandwidth to mine. Miners collaborate with one another by sending small messages (called Announcements ) and the sending of these messages requires a large amount of bandwidth . Miners who are working in collaboration with one another are members of a mining pool, therefore all mining of PacketCrypt is done in pools. PacketCrypt mining is split into two distinct stages: Announcement Mining - Using your CPU to create Announcements Block Mining - Collecting Announcements from Announcement Miners and using them to mine blocks Block mining is typically done at the mining pool's datacenter, however Announcement mining can be done from anywhere.","title":"Mining"},{"location":"start_mining/pkt-mining-pool/#how-to-announcement-mine","text":"There are a number of options available when it comes to installing the PacketCrpyt announcement miner. Choose whichever best suits your technical ability:","title":"How to Announcement mine"},{"location":"start_mining/pkt-mining-pool/#1-install-a-pre-built-binary","text":"Pre-built packetcrypt binaries (for linux) or installation packages (for macos) and archives (for windows) can be downloaded from packetcrypt releases page . For windows , download the zip archive suffixed with -windows.zip and extract its content. For macos , download the package suffixed with .pkg and click on its icon in the Finder for installation. For linux , download the binary suffixed with -linux_amd64 and rename it packetcrypt . If you're on Arch linux or Manjaro, you can install the packetcrypt AUR package","title":"1. Install a Pre-built Binary"},{"location":"start_mining/pkt-mining-pool/#2-deploy-a-docker-image","text":"There is a PacketCrypt Docker image available, which can be used for announcement mining. To install: Download and install Docker for your operating system. Download the PacketCrypt Docker image: $ docker pull thomasjp0x42/packetcrypt There are also PacketCrypt Docker images built without the portable flag ( --no-portable ) which may increase the performance of the announcement mining while reducing CPU compatibility. One such image (compiled on AMD 5950x) is available at thomasjp0x42/packetcrypt-amd64 . Additionally, for ARM devices such as Raspberry Pi, there is an image available at thomasjp0x42/packetcrypt-arm64 . The arm64 image will also work on Apple silicon such as the M1 and M2 chips. Run the container similar to the commands described in the Begin Announcement Mining section, except replace this part of the command: $ packetcrypt with this command to run PacketCrypt from Docker: $ docker run thomasjp0x42/packetcrypt The final command will be formatted like this: $ docker run thomasjp0x42/packetcrypt ann -p More information can be found at the PacketCrypt DockerHub page","title":"2. Deploy a Docker Image"},{"location":"start_mining/pkt-mining-pool/#3-build-from-source","text":"Building from source will generally offer the best mining performance but requires more technical knowledge than the previous two options. First install rust if you haven't, see: rustup git clone https://github.com/cjdelisle/packetcrypt_rs cd packetcrypt_rs cargo build --release See the PacketCrypt GitHub repository for more detailed instructions.","title":"3. Build From Source"},{"location":"start_mining/pkt-mining-pool/#begin-announcement-mining","text":"Important You cannot mine into the electrum wallet , You can only mine into the Command Line Wallet , the Pkt.World Wallet or the Mac GUI Wallet . To begin mining, you will need the address of your wallet and you will need to choose a pool. There are two ways to configure the announcement miner; by using CLI parameters or by using a configuration file: Using the CLI packetcrypt ann -p pool_1 [pool_2 pool_3 pool_4] [or for windows] packetcrypt.exe ann -p pool_1 [pool_2 pool_3 pool_4] Using a Configuration File A configuration file must be in JSON format. The file can be loaded from the local filesystem or from a web-accessible location. Any CLI parameters used will overide the corresponding settings in the configuration file. Example config.json: { \"payment_addr\": \"\", \"pools\": [ \"pool_1\", \"pool_2\", \"pool_3\", \"pool_4\" ] } packetcrypt ann -c \"./config.json\" [or] packetcrypt ann -c \"https://example.com/config.json\" [or for windows] packetcrypt.exe ann -c \"./config.json\" [or] packetcrypt.exe ann -c \"https://example.com/config.json\" Announcement mining can be done into a single pool or multiple pools. When you announcement mine into multiple pools, you will be paid by each pool that you submit announcements to. pool_1 is the pool running the highest difficulty. If you notice problems, you can test listing the pools in a different order. The number of pools you mine into is at your discretion. If a pool is down or malfunctioning you will notice the pool is not mining at [100%] in your mining feed and you can choose to remove the under-performing or malfunctioning pool.","title":"Begin Announcement Mining"},{"location":"start_mining/pkt-mining-pool/#how-to-install-a-pkt-miner-on-mac","text":"Install the Zulu or CLI PKT Wallet from https://docs.pkt.cash Download the PacketCrypt.pkg for mac Open your Terminal Install Rust by entering in the command: $ curl --proto '=https' --tlsv1.2 -sSf * https://sh.rustup.rs | sh Press 1 to confirm Enter the command: $ sudo install make Enter the command: $ git clone https://github.com/cjdelisle/packetcrypt_rs Enter the command: $ cd packetcrypt_rs Enter the command: $ ~/.cargo/bin/cargo build --release Enter the command: $ ./target/release/packetcrypt ann -p [your PKT Wallet Address] [pool 1] [pool 2] [pool 3] [pool 4]","title":"How to install a PKT miner on Mac"},{"location":"start_mining/pkt-mining-pool/#choosing-pools-to-mine-in","text":"You can mine in as many pools as you have the bandwidth to supply. The same data will be uploaded so your CPU is only used once. Currently the pools which are regularly winning blocks include: Pkteer: http://pool.pkteer.com PKTPool: http://pool.pktpool.io PktWorld: http://pool.pkt.world Zetahash (f.k.a. Srizbi): https://stratum.zetahash.com In general the recommendation is to list the pool with highest difficulty in the first position to ensure your announcements will be accepted, as the standardized policy is to accept announcements of a higher difficulty for pools with a lower base difficulty. In some cases the rewards might vary depending on the pool order regardless of difficulty, subject to custom policies implemented by the respective pools. (Check the relevant channels on Discord for current pool statuses) You should test your daily earnings on each pool to see which one is best. Your mining revenue depends on how much each pool allocates towards announcement miners as well as how much hardware they are using in-house. The pools are winning different blocks and if you mine to just one pool, your not getting any payment from the others when they win a block. It's the same with mining to a pool that is not winning any blocks.","title":"Choosing Pools to mine in"},{"location":"start_mining/pkt-mining-pool/#limiting-system-resource-usage","text":"Limiting the system resources available to Packetcrypt may negatively effect your mining power but can be useful to conserve resources for other processess.","title":"Limiting System Resource Usage"},{"location":"start_mining/pkt-mining-pool/#limit-cpu-usage","text":"Announcement mining is a resource intensive process. By default, Packetcrypt will use 100% of the available CPU resources. CPU usage can be limited by assigning a limited number of threads to packetcrypt using the -t CLI parameter or \"threads\" key if using a configuration file. Example of assigning four (4) threads to Packetcrypt: packetcrypt ann -p pool_1 [pool_2 pool_3 pool_4] -t 4 or { \"threads\" 4 }","title":"Limit CPU Usage"},{"location":"start_mining/pkt-mining-pool/#limit-bandwidth-usage","text":"Bandwidth usage is directly related to two main factors: 1 - Mining difficulty of the primary pool (the first pool listed in Packetcrypt pool configuration) A lower difficulty means higher bandwidth usage 2 - The number of pools mined Packetcrypt will send the same Announcements to each pool mined Bandwidth usage can therefore be limited by selecting a higher difficulty pool as the primary pool and/or by mining to fewer pools.","title":"Limit Bandwidth Usage"},{"location":"start_mining/pkt-mining-pool/#block-mining-running-a-pool","text":"Because each block miner must use as much bandwidth as all of the announcement miners combined , block mining is typically done at the location of the pool. Even a pool operator who wanted to support external block mining would find that the pool itself would need enough upload bandwidth to match all of the block miners - which would be completely untenable. If you are interested in block mining, contact the pool operator and discuss sending hardware to their location. Starting your own pool requires setting up a number of services: pktd node (one or more) - One pktd instance is required for the Master to function, each of the Block Handlers may optionally use separate pktd nodes. Master (one) - This node coordinates all of the others and provides work files and configuration Ann Handler (one or more) - These are high performance nodes which accept announcements from the announcement miners in the network, they also provide announcements to the block miners. As you scale up the amount of bandwidth in the pool, you will need to add more Ann handlers. Block Miner (one or more) - These nodes download announcements from the announcement handlers and use them in the mining process to mine blocks. Block Handlers (one or more) - These nodes receive \"block shares\" from the block miners and submit blocks if Paymaker (1) - This node receives updates from the Ann Handlers and Block Handlers and keeps track of who should be paid. The Paymaker sends configuration to the pktd node which is used by the Master in order to make the pool pay out the announcement and block miners","title":"Block Mining & Running a Pool"},{"location":"start_mining/pkt-mining-pool/#packetcrypt-data-flow","text":"\u2588 Orange: Announcements are sent from the Announcement miners to the Ann Handlers and then to the Block miners \u2588 Blue: Block shares are sent from block miners to Block Handler(s) \u2588 Purple: Winning blocks are submitted by the Block Handler(s) to pktd and the PKT network \u2588 Pink: Block Handlers and Ann Handlers inform Paymaker of work done by announcement and block miners \u2588 Green: Paymaker configures pktd instance to create blocks which pay the people who have been mining \u2588 Brown: Master gets block templates from pktd instance Black dotted line: All nodes request configuration and block templates from Master node","title":"PacketCrypt Data Flow"},{"location":"start_mining/pkt-mining-pool/#more-information-and-packetcrypt-pool-code","text":"The code and documentation for running a pool is available on the C / nodejs version of the PacketCrypt project, the new Rust version only contains Announcement Miner and Announcement Handlers.","title":"More Information and PacketCrypt Pool Code"},{"location":"start_mining/pkt-mining-pool/#announcement-difficulty","text":"PacketCrypt is designed in such a way that a mining pool can double its effective power by: Doubling the total block mining computation effort Doubling the total announcement mining computation effort, or Doubling the amount of bandwidth between announcement miners and the pool The way that a pool operator limits the amount of bandwidth flowing into the pool, to prevent overloading of the network, is by setting what is known as the announcement difficulty . The announcement difficulty for a pool specifies how much work must be done on an announcement in order for the announcement to be accepted and paid out by the pool. Announcement difficulty serves to slow down the announcement miners to protect the pool's network. In general, doubling the announcement difficulty will halve the amount of bandwidth used by the pool and will also halve the pool's overall mining power, with a limit that setting the announcement difficulty lower than 2 does not bring any additional value. To explain why it works like this, we need to examine the PacketCrypt algorithm rules and the in particular how the block mining software decides which announcements to use when attempting to mine a block.","title":"Announcement Difficulty"},{"location":"start_mining/pkt-mining-pool/#announcement-set-selection","text":"PacketCrypt algorithm allows block miners to perform less work if they are able to prove that they had a certain number of \"high value\" announcements in memory at the time of mining, the exact ratio of actual work a block miner must do to the amount of work the PKT blockchain requires is called the power multipler . For a block miner seeking to optimize their power multiplier, every announcement has a particular level of utility value which is based on the amount of work that was done by the announcement miner (announcement difficulty) and how old the announcement is. We call this the effective difficulty . The effective difficulty of an announcement starts off as the actual difficulty of the work done to mine it and then decreases by half every block-period until it is less than 1 and the announcement is no longer usable for mining. The block mining software selects a subset of announcements which which will give it the best power multiplier based on the PacketCrypt algorithm: power_multiplier = min(effective_difficulty) * ann_count ** 2 The min(effective_difficulty) is the effective difficulty of the \"least valuable\" announcement that is being mined with. Lets assume that announcement miners are providing a steady supply of 1000 announcements per block-period and all announcements have an initial announcement difficulty of 128. The block mining software can choose to mine with 1000 announcements at 128 effective difficulty, or with 2000 announcements at 64 effective difficulty, or with 3000 announcements at 32 effective difficulty and so on. The best choice is to use the previous three block periods which provides a power multiplier that is 225% higher than that of using just the most recent 1 period worth of announcements. This curve is the same no matter what difficulty we are starting with.","title":"Announcement Set Selection"},{"location":"start_mining/pkt-mining-pool/#optimal-difficulty-curve","text":"Knowing that the optimal announcement set is all of those announcements mined over the past 3 block periods, we can compute the overall power of a pool as the announcement difficulty is raised. At announcement difficulty 1, announcements cannot be used for more than 1 block, but if we imagine that the announcement mining community can produce 1000 announcements per block at difficulty 1 then we can reason that the power multiplier will be 1000 ** 2 or 1 million. At difficulty 2 we can expect the announcement miners will produce 500 announcements per block period but since 2 block periods can be used, the power multiplier is the same. At difficulty 4, the announcement miners will produce 250 announcements per block period and they will be valid for 3 block periods making the power multiplier 750 ** 2 or 562,500. From here, the power output of the power multiplier of the optimal announcement set halves for each doubling of the announcement difficulty, making the optimal difficulty 2 .","title":"Optimal Difficulty Curve"},{"location":"start_mining/pkt-mining-pool/#faq-for-ann-miners","text":"","title":"FAQ for ANN Miners"},{"location":"start_mining/pkt-mining-pool/#what-does-overflow-mean","text":"When the ann handler receives an announcement, it puts it into a queue, when the queue fills up it responds overflow immediately. The queue can become long, so you may receive \"operation timed out\" you're still being paid, when you receive \"overflow\" you are not being paid. Unfortunately, you may also receive \"operation timed out\" because the handler is unresponsive, it's not obvious which is the reason from looking at the logs. For example, what you will see in the AnnMiner Logs: 1618394538 INFO annmine.rs:519 467 Ke/s 28.56Mb/s overflow: [0, 0, 3072, 0] uploading: [0, 0, 17632, 0] accept/reject: [26932/0, 0/0, 4856/0, 796/0] - goodrate: [100%, 100%, 61%, 100%] 467 Ke/s 467 kilo-encryptions (thousands of encryptions) per second of mining power. 28.56Mb/s Total upload bandwidth (to all pools - combined) overflow: [0, 0, 3072, 0] Overflowed the internal queue of the ann miner, before it was even able to upload to the pool, one number for each pool you're mining to. 3072 Number of anns which are not uploaded to pool #3. uploading [0, 0, 17632, 0] Number of anns currently in-flight in active http requests, again 3rd pool is a problem, others are doing well (in this example). accept/reject [26932/0, 0/0, 4856/0, 796/0] Anns accepted/rejected by each pool, these numbers are based on the previous 10 seconds, pool #2 is giving a zero accepted which might be an issue, keep watching the next message 10 seconds later for another update. goodrate [100%, 100%, 61%, 100%] Goodrate = number of anns accepted divided by number of anns produced.","title":"What does overflow mean?"},{"location":"start_mining/pkt-mining-pool/#setting-up-a-pool","text":"","title":"Setting up a Pool"},{"location":"start_mining/pkt-mining-pool/#expectations","text":"General knowledge of Linux General knowledge of git General knowledge of networking General knowledge of blockchain Access to at least 6 machines running Ubuntu 18.04 LTS or 20.04 LTS , to deploy the following services. Machine 1 : PKT node Machine 2 : Master, Paymaker & Blkhander Machine 3 : AnnHandler Machine 4 : AnnHandler Machine 5 : BlkMiner Machine 6 : BlkMiner Note: It can be done all on a single machine, you just need to pay attention to ports etc. As of June 2022, the network difficulty is high, and given that half of the work is done at pool premises, it's recommended to run at least a dozen BlkMiner machines, with a significant (768GB recommended) ammount of RAM.","title":"Expectations"},{"location":"start_mining/pkt-mining-pool/#block-mining-running-a-pool_1","text":"Starting your own pool requires setting up a number of services: pktd node (one or more) - One pktd instance is required for the Master to function, each of the Block Handlers may optionally use separate pktd nodes. Master (one) - This node coordinates all of the others and provides work files and configuration Ann Handler (two or more) - These are nodes which accept announcements from the announcement miners in the network, they also provide announcements to the block miners. As you scale up the amount of bandwidth in the pool, you will need to add more Ann handlers. Block Miner (two or more) - These high performance nodes download announcements from the announcement handlers and use them in the mining process to mine blocks. Block Handlers (one or more) - These nodes receive \"block shares\" from the block miners and submit blocks if they validate the share Paymaker (one) - This node receives updates from the Ann Handlers and Block Handlers and keeps track of who should be paid. The Paymaker sends configuration to the pktd node which is used by the Master in order to make the pool pay out the announcement and block miners","title":"Block mining & running a pool"},{"location":"start_mining/pkt-mining-pool/#general-information","text":"","title":"General Information"},{"location":"start_mining/pkt-mining-pool/#repository-information","text":"The following repositories hold the required programs to run a pool: Repository Tools packetcrypt_rs: https://github.com/cjdelisle/packetcrypt_rs AnnHandler, Blkminer, AnnMiner PacketCrypt: https://github.com/cjdelisle/PacketCrypt/ Master, Paymaker, BlkHandler pktd: https://github.com/pkt-cash/pktd pktd","title":"Repository Information:"},{"location":"start_mining/pkt-mining-pool/#assumed-network-ranges","text":"In this guide we have two separate networks, the public network (198.51.100.0/24), and local network (10.0.16.0/24) to connect AnnHandlers and BlkMiner. Machine Public Network IP Private Network IP Machine 1 198.51.100.1 10.0.16.1 Machine 2 198.51.100.2 10.0.16.2 Machine 3 198.51.100.3 10.0.16.3 Machine 4 198.51.100.4 10.0.16.4 Machine 5 X 10.0.16.5 Machine 6 X 10.0.16.6","title":"Assumed network Ranges:"},{"location":"start_mining/pkt-mining-pool/#assumed-port-ranges","text":"Service Machine Port/Port Ranges Master Machine 2 8080 Paymaker Machine 2 8081 BlkHandlers Machine 2 8100-8200 AnnHandlers Machine 3 & 4 80","title":"Assumed Port Ranges:"},{"location":"start_mining/pkt-mining-pool/#installation","text":"","title":"Installation"},{"location":"start_mining/pkt-mining-pool/#machine-1","text":"","title":"Machine 1"},{"location":"start_mining/pkt-mining-pool/#pktd-node","text":"150GB of storage is required at a minimum to run the pktd node. Recommended size is around 250GB of NVMe storage. Install Golang sudo add-apt-repository ppa:longsleep/golang-backports sudo apt update sudo apt install golang-go Install git sudo apt install git Install the pktd node git clone --branch develop https://github.com/pkt-cash/pktd cd pktd ./do The output should show the following: Everything looks good - use ./bin/pktd to launch","title":"PKTD node:"},{"location":"start_mining/pkt-mining-pool/#machine-2","text":"","title":"Machine 2"},{"location":"start_mining/pkt-mining-pool/#master-paymaker-blkhandler","text":"Install the required tools: cd ~ sudo add-apt-repository universe sudo apt install git sudo apt install make sudo apt install npm sudo npm cache clean -f sudo npm install -g n sudo n stable Restart your shell ### Add here how to get latest stable version of node Clone the source code: git clone --branch master https://github.com/cjdelisle/PacketCrypt Build the PacketCrypt code cd PacketCrypt npm install","title":"Master | Paymaker | BlkHandler:"},{"location":"start_mining/pkt-mining-pool/#machine-4-6","text":"","title":"Machine 4 - 6"},{"location":"start_mining/pkt-mining-pool/#blkminer-annhandler-annminer","text":"Install the Required tools: sudo apt install gcc git sudo apt install curl curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh Clone packetcrypt_rs git clone --branch develop https://github.com/cjdelisle/packetcrypt_rs Compile PacketCrypt cd packetcrypt_rs ~/.cargo/bin/cargo build --release --features jemalloc","title":"BlkMiner | AnnHandler | AnnMiner:"},{"location":"start_mining/pkt-mining-pool/#config-of-pooljs","text":"Information: pool.js is located at: ~/PacketCrypt/pool.example.js You need to edit this file, then run: cp ~/PacketCrypt/pool.example.js ~/PacketCrypt/pool.js","title":"Config of pool.js"},{"location":"start_mining/pkt-mining-pool/#configprivateseed","text":"Signing of announcements is rarely used, it breaks people mining into multiple pools, and you should set it to null unless \"you know what you're doing\" This seed is used for deriving keys which will be used for signing announcements. Setting this value to an alphanumeric value e.g oHk8TXpbtRRZGtaYYMnIFAzYMrVh6vA8XzKWWXcKbzCThuFLIJ234bHN5peddQFzR2TtQyo58gcFRP7bKg9BeXZirSqp9gVpjBWp In general, this value should be set to the null, as signing announcements is rarely used, and breaks Announcement mining with multiple pools if you have your pool externally accessable, and should only be set if you have a strong understanding and knowledge of what you are doing. config.privateSeed = null If you aren't bothered by, or don't require your announcements to be signed .","title":"config.privateSeed"},{"location":"start_mining/pkt-mining-pool/#configpaymakerhttppasswd","text":"Anyone who has this password can make http posts to the paymaker (claim that shares were won) You should make this random and also firewall the paymaker from the public. The upload will be done using Authorization Basic with a username of \"x\" and this as the password config.paymakerHttpPasswd = 'anyone with this password can post results to the paymaker'; You can put the paymaker behind an http proxy if you wish.","title":"config.paymakerHttpPasswd"},{"location":"start_mining/pkt-mining-pool/#configmasterurl","text":"This is used by the paymaker and block handler when running them with pool.js, it is used to resolve where the master is. You can either set this as a locally host or put your master behind a nginx proxy config.masterUrl = 'http://localhost:8080'; or if you have your instance public, and you want to have it be resolvable publically, replace the url with your own. config.masterUrl = 'http://pool.pktpool.io';","title":"config.masterUrl"},{"location":"start_mining/pkt-mining-pool/#configrpc","text":"The username and password set here, should be the same username and password used at the end of this guide for when you configure the pktd service. user: 'x', pass: 'x',","title":"config.rpc"},{"location":"start_mining/pkt-mining-pool/#configannhandlers","text":"Information: config.annHandlers is a list of json object, with an object for each individual annhandler you would like to run, each ann handler will require it's own individual port. As the AnnHandler will be run on the same machine as the BlkMiner you need to make sure there are no over-lapping port bindings. If you plan to allow external AnnMiners (AnnMiners not on your LAN to mine against your pool, the url's placed in the AnnHandlers list, should be externally resolvable. The address that is advertized for accessing this ann handler (external address) If running locally use: url: 'http://10.0.16.3:8081','http://10.0.16.4:8081' If allowing external annminers use a resolved address such as: url: 'http://ann1.pktpool.io','http://ann2.pktpool.io' Replace the url with your own.","title":"config.annHandlers"},{"location":"start_mining/pkt-mining-pool/#configblkhandlers","text":"Information: config.blkHandlers is a list of json object, with an object for each individual annhandler you would like to run, each ann handler will require it's own individual port. BlockHandlers are low-effort high-volume single-threaded workers. What address should be advertized for accessing this BlkHander, again make sure there are no overlapping ports. If you are wanting to support external blockminers, this address should be externally resolvable url: 'http://localhost:8100', This is the port that the blkHandler will bind to. port: 8082, This is the host that the blkHandler will bind to. host: '::', This is how many requests a blkHandler can queue before the handler starts rejecting requests maxConnections: 50, root: config","title":"config.blkHandlers"},{"location":"start_mining/pkt-mining-pool/#configmaster","text":"Which port to run the master on port: 8080, What address to bind to, set to localhost if proxying host: '::', Minimum work for an announcement. This number is effectively a bandwidth divisor, every time you double this number you will reduce your bandwidth by a factor of two. annMinWork: Util.annWorkToTarget(128), Average number of shares per block, reducing this number will reduce load on your block handlers, but increasing it will allow payment to be spread more evenly between block miners. This wants to be set to a higher number than one, for the purpose of constantly testing that the block miners are making valid shares. You may have a block miner sitting for hours without a share and then when it wins one, it can become invalid because of misconfiguration shareWorkDivisor: 4, Which versions of announcements we will accept annVersions: [1], Request that ann miners mine announcements that are this many blocks old. Announcements contain a commitment of the most recent block hash but they need 3 blocks to \"mature\" before they can be used The point of this is so that PacketCrypt is about bandwidth, not latency. But there is a risk: If there is a surge then you are going to be starved for announcements When you are starved, you will have few usable anns which causes a slow-down in mining and the announcements which are being submitted are not usable. When you win a few blocks, those announcements become usable and you surge, which causes you to go back into starvation again. This should be set to either: 0 Which means the announcements you are receiving are used instantly 3 Which means you are waiting for the announcements to mature before using them. If running your own AnnMiners, it is advisable to set this to 0, and add the --mineold 3 to some of your AnnMiner startups on the CLI. This helps to keep a balance between keeping your pool as powerful as possible, along with having AnnMiners to help out in the case of a starvation mineOldAnns: 0,","title":"config.master"},{"location":"start_mining/pkt-mining-pool/#configpaymaker","text":"How the miners should access the paymaker (external address), replace the url with your own. url: 'pool.pktpool.io', Which port to run the paymaker on port: 8081, What address to bind to, set to localhost if proxying host: '::', Seconds between sending updates to pktd. If this set to zero, the payMaker will accept log uploads but will not send any changes of payout data to pktd. updateCycle: 120, updateCycle: 0 to disable How many seconds backward to keep history in memory historyDepth: 60 * 60 * 24 * 30, Maximum number of simultanious connections to accept before sending 500 errors maxConnections: 200,","title":"config.payMaker"},{"location":"start_mining/pkt-mining-pool/#anncompressor","text":"Store data in 1 minute aggregations timespanMs: 1000 * 60, Allow data to be submitted to any of the last 10 aggregations slotsToKeepEvents: 10, What fraction of the payout to pay to block miners (the rest will be paid to ann miners) ( Pay per last N shares ) blockPayoutFraction: 0.5, What percent of the total winnings should be taken for pool management poolFee: 0.40, The address which should be paid the pool fee poolFeeAddress: \"pkt1qyc9dkhca7uc84zn3vlgd0h0fxr3twwn34qgeqe\", This constant will affect how far back into history we pay our announcement miners ( Pay per last N shares ) pplnsAnnConstantX: 0.125, This constant will affect how far back into history we pay our block miners ( Pay per last N shares ) pplnsBlkConstantX: 2, When there are not enough shares to fairly spread out the winnings, pay what is left over to this address. defaultAddress: \"pkt1q6hqsqhqdgqfd8t3xwgceulu7k9d9w5t2amath0qxyfjlvl3s3u4sjza2g2\", When something goes wrong, direct pktd to send all coins here, if this is different from the defaultAddress then it is possible to account for and pay out to the miners later when the problem is fixed. errorAddress: \"pkt1q6hqsqhqdgqfd8t3xwgceulu7k9d9w5t2amath0qxyfjlvl3s3u4sjza2g2\",","title":"annCompressor"},{"location":"start_mining/pkt-mining-pool/#config-of-pooltoml","text":"Information: - pool.example.toml is located at: ~/packetcrypt_rs/pool.example.toml - You need to edit this file, then run: ~/packetcrypt_rs/pool.example.toml ~/packetcrypt_rs/pool.toml Password used by your paymaker to post logs for payment, the same as config.paymakerHttpPasswd paymaker_http_password = \"you'll want this to be a secret\" URL of the pool master, used for getting configuration and work, the same as: Replace the url with your own. master_url = \"http://pool.pktpool.io\"","title":"Config of pool.toml"},{"location":"start_mining/pkt-mining-pool/#ann_handlerah","text":"You can have multiple ann_handlers, you can do this by defining each one such as: [ann_handler.ah0] \"parameters\" [ann_handler.ah1] \"parameters\" These can all be in a single file to be used by each annhandler, when starting the annhandlers, you would start them with on each respective machine: packetcrypt ah --config /path/to/config.toml ah0 packetcrypt ah --config /path/to/config.toml ah1 Number of threads to dedicate to the AnnHandler num_workers = 8 Length of the input queue, keeping this low will create back-pressure and prevent miners from posting too many announcements when the server is in fact overloaded input_queue_len = 256 The public url of the annhandler, this should match what is set in your pool.js Replace the url with your own. public_url = \"http://ann1.pktpool.io/submit\" Bind to this port bind_port = \"198.51.100.3:80\" Bind this port to the sprayer component bind_pvt = \"10.0.16.3:6666\" Set sprayer spray_at = [\"239.0.1.1:6667\"] spray_workers = 8 For Machine 3 you should end up with something like this [ann_handler.ah0] block_miner_passwd = \"no one steals my anns\" skip_check_chance = 0 num_workers = 8 input_queue_len = 512 public_url = \"http://ann1.pktpool.io/submit\" bind_pub = \"198.51.100.3:80\" bind_pvt = \"10.0.16.3:6666\" spray_at = [\"239.0.1.1:6667\"] spray_workers = 8 subscribe_to = [] files_to_keep = 512 The same logic should be followed for Machine 4 and other handlers you may have.","title":"ann_handler.ah*"},{"location":"start_mining/pkt-mining-pool/#note-to-bind-low-ports-with-non-root-user-run","text":"sudo setcap CAP_NET_BIND_SERVICE=+eip $(which packetcrypt)","title":"NOTE: To bind low ports with non-root user run:"},{"location":"start_mining/pkt-mining-pool/#running-manually","text":"","title":"Running Manually"},{"location":"start_mining/pkt-mining-pool/#machine-1_1","text":"Information: These tasks need to be run in the order they are presented PKTD needs to have downloaded the full chain first, you will know when the node is upto date when height is equal to the current block on the explorer It can take 12+ hours to fully sync to the current block height","title":"Machine 1"},{"location":"start_mining/pkt-mining-pool/#pktd","text":"--rpcuser and --rpcpass should match the values set in pool.js under config.rpc ./pktd/bin/pktd --rpcuser=XXX --rpcpass=XXX --miningaddr ","title":"PKTD"},{"location":"start_mining/pkt-mining-pool/#machine-2_1","text":"","title":"Machine 2"},{"location":"start_mining/pkt-mining-pool/#master","text":"node ./pool.js --master","title":"Master"},{"location":"start_mining/pkt-mining-pool/#paymaker","text":"node ./pool.js --payMaker","title":"Paymaker"},{"location":"start_mining/pkt-mining-pool/#blkhandlers","text":"Launch the BlkHandler nodes, specify --blk0 for the first BlkHandler , --blk1 for the second, and so forth cd PacketCrypt node ./pool.js --blk0 node ./pool.js --blk1","title":"BlkHandler(s)"},{"location":"start_mining/pkt-mining-pool/#machine-3","text":"","title":"Machine 3"},{"location":"start_mining/pkt-mining-pool/#annhandler","text":"cd packetcrypt_rs ./target/release/packetcrypt ah --config /path/to/pool.toml ah0","title":"AnnHandler"},{"location":"start_mining/pkt-mining-pool/#machine-4","text":"","title":"Machine 4"},{"location":"start_mining/pkt-mining-pool/#annhandler_1","text":"cd packetcrypt_rs ./targer/release/packetcrypt ah --config /path/to/pool.toml ah1","title":"AnnHandler"},{"location":"start_mining/pkt-mining-pool/#machine-5-and-6","text":"","title":"Machine 5 and 6"},{"location":"start_mining/pkt-mining-pool/#blkminer","text":"--threads is the number of threads you want to dedicate to the Blkminer, the default is to use all available threads. --paymentaddr is the wallet you want your coins to be mined into, it is advisable to not use the electrum wallet for this. --memorysizemb is how much RAM you are allocating to block mining, Ideally you want to set as much as you can. is the masterUrl of your pool cd packetcrypt_rs ./target/release/packetcrypt blk --paymentaddr --threads 80 --memorysizemb 665000 --handlerpass NoOneStealsMyAnns --subscribe 10.0.16.3:6666 --bind 0.0.0.0:6667 --mcast 239.0.1.1","title":"BlkMiner"},{"location":"start_mining/pkt-mining-pool/#nginx-setup-for-allowing-external-annmining","text":"","title":"NGINX Setup (For allowing external AnnMining)"},{"location":"start_mining/pkt-mining-pool/#machine-2_2","text":"Update system and install Nginx sudo apt update sudo apt install nginx Unlink default nginx site unlink /etc/nginx/sites-enabled/default cd /etc/nginx/sites-available Create and edit the reverse-proxy.conf file vim reverse-proxy.conf The config for the services: server { listen 80; listen [::]:80; server_name ; location / { proxy_pass http://localhost:8080/; } } server { listen 80; listen [::]:80; server_name paymaker.pktpool.io; location / { proxy_pass http://localhost:8081/; } } Link new file to sites-enabled ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/reverse-proxy.conf Remove default config rm default Check reverse proxy config is correct nginx -t Reload nginx to pick up config changes. sudo systemctl reload nginx","title":"Machine 2"},{"location":"wallet_setup/install-from-seed/","text":"Installing a Wallet From Seed \u00b6 If you already have a PKT wallet and know your seed, you may be able to import your coins into a new wallet. This will depend on the compatibility of your seed with the new wallet. The seed to your wallet is either a list of 15 words which you were instructed to write down during your initial wallet setup. If you set up your wallet in 2019 or early 2020 you may have a seed that is a long alphanumeric string of characters, instead of a list of 15 words. What is important to know about PKT Wallets seeds is that some wallets encrypt the wallet seed using the wallet password. In these cases, you will need to know the seed and the password that was used when the wallet was initially created. It is important to keep your seed and password written down in a safe place where you will remember it. When you are setting up any of the PKT wallets you will be asked if you want to load from seed. Then you will follow the instructions. If you want to migrate your PKT Electrum wallet seed into the PKT CLI wallet, follow these steps [here].","title":"Installing from Seed"},{"location":"wallet_setup/install-from-seed/#installing-a-wallet-from-seed","text":"If you already have a PKT wallet and know your seed, you may be able to import your coins into a new wallet. This will depend on the compatibility of your seed with the new wallet. The seed to your wallet is either a list of 15 words which you were instructed to write down during your initial wallet setup. If you set up your wallet in 2019 or early 2020 you may have a seed that is a long alphanumeric string of characters, instead of a list of 15 words. What is important to know about PKT Wallets seeds is that some wallets encrypt the wallet seed using the wallet password. In these cases, you will need to know the seed and the password that was used when the wallet was initially created. It is important to keep your seed and password written down in a safe place where you will remember it. When you are setting up any of the PKT wallets you will be asked if you want to load from seed. Then you will follow the instructions. If you want to migrate your PKT Electrum wallet seed into the PKT CLI wallet, follow these steps [here].","title":"Installing a Wallet From Seed"},{"location":"wallet_setup/install-pkt-electrum/","text":"Installing PKT Electrum (Mac/Windows) \u00b6 Important Electrum is a good lightweight wallet for making and receiving payments, but it lacks scalability and is not appropriate for mining , if you are interested in mining PKT, see pktwallet . First setup \u00b6 MacOS \u00b6 Download the file ending with .dmg from the latest PKT Electrum Releases Open Finder Double-click on your Downloads folder and find and click on electrum-pkt-4.0.2.dmg A new window will open with the PKT Electrum app, click and drag it into your Applications folder Press Command+Space to open your Spotlight Search and type PKT Electrum, when you see the PKT Electrum app, press the Enter key to open it. The first time PKT Electrum is opened, you will get a popup asking you if you want to open it, click open Continue with Setting up your wallet below Windows \u00b6 Download the file ending with .exe from the latest PKT Electrum Releases You will see a popup window telling you the application is not signed by a Microsoft Authorized Developer, always be sure you download PKT Electrum from the original website, do not run any app given to you in a chat, file-sharing or email attachment. Click \"More info\" to show additional options. Click the \"Run anyway\" button to launch PKT Electrum, you won't see this message again. Follow the steps in the setup process. Go to your desktop and you should see a new icon labeled PKT Electrum , click on it. Continue with Setting up your wallet below. Linux \u00b6 Download the file ending with .AppImage from the latest PKT Electrum Releases Click on the downloaded file and PKT Electrum should start up right away. Setting up your wallet \u00b6 Before you can begin using PKT, you need to setup your wallet, this means writing down your secret key and setting passwords so your PKT will stay safe. First you will be asked if you want to configure the server to connect to, unless you are an advanced user, just click \"next\" Next select your wallet, you give your wallet a name if you wish, or leave it as default_wallet , then click \"next\". You will be prompted to select which type of wallet you are creating, unless you are doing something fancy, you'll want to just click \"next\" Next you will have the option to create a wallet using a secret key from different sources, for the purposes of this tutorial just click next. Next you will be asked if you want to create a \"legacy\" style wallet, this is not needed so just click \"next\" Now PKT Electrum is going to create a seed , it takes the form of 12 words and from it your entire wallet is created If you have these 12 special words, you can recover your PKT even if your computer is lost or damaged If someone else gets access to these 12 words, they can steal all of your PKT It is recommended that you write this on paper and keep in a safe place. After you have written your seed, you will be asked to type it back in, the fast way to do this is by copy/paste to a text pad Now you'll be asked to write it back in, you can copy it from the text pad Make sure you really stored your seed on paper, we do not recommend storing it on any electronic device . Now you will need to pick a passphrase for your wallet This passphrase encrypts your wallet, protecting your PKT even if your computer is stolen Unlike your seed, the passphrase is useless without the wallet file We recommend using https://www.useapassphrase.com/ to pick a strong passphrase for you You can store your passphrase on your phone to have easy access Congratulations, you now have a PKT wallet! It will require about 5 minutes to synchronize with the PKT blockchain, but you can still use it while this is happening. Receiving PKT \u00b6 To receive coins, you need to create a new PKT address Click the \"Receive\" tab Type a description for the purpose of receiving the coins, this will appear in the notification when you get paid Set the expiration, if this is not an invoice , you can choose \"never\" After you click \"Request\", your wallet will create a new address and copy it to your clipboard so you can send it to the person paying you (or transfer money to your new wallet) When PKT gets sent to your new address, you will get a notification. It says \"unconfirmed\" because the transaction has not yet been included in the history of the blockchain. Once your transaction has been included in the blockchain, this icon will change to a clock and then after a few minutes, a checkmark Congratulations, you have received your first PKT Sending PKT \u00b6 To pay PKT to someone else, click on the Send tab and paste the address to be paid Type a description of the payment, this is just for you, it will not be sent to the person you are paying Enter the amount to be paid Click Pay You will be prompted to enter your wallet passphrase in order to decrypt the wallet for one brief moment to send the PKT Every transaction requires a fee for inclusion in the blockchain, this is a very small cost: 132 nPKT is one hundred and thirty two nano-PKT (that means billionths , i.e. 0.000000132 PKT) After you enter your passphrase and click \"send\", you will see a transaction ID , this set of numbers and letters uniquely identifies your transaction and can be used to view it in the block explorer. Just like when receiving, your transaction will appear first as \"unconfirmed\" and then later it will switch to a clock when it has been included in the blockchain. After waiting a few minutes, you will see a clock and then later a checkmark indicating your transaction has been included in the blockchain When people consider a transaction to be \"complete\" depends on the merchant, but in general it should be considered to be ok once it switches from \"unconfirmed\" to the clock icon. Congratulations, you've sent PKT! About Units \u00b6 Each PKT is made up of 1000 milli-PKT, denoted mPKT Each milli-PKT is sub-divided into 1000 micro-PKT, denoted uPKT Each micro-PKT is sub-divided into 1000 nano-PKT, denoted nPKT Advanced usage \u00b6 Recover from seed \u00b6 You can recover a PKT Electrum wallet from the seed you were given when you set it up. To do this follow the same instructions as for any other Electrum wallet: https://bitcoinelectrum.com/restoring-your-standard-wallet-from-seed/ Note that recovery from seed will not work to import addresses from other wallets such as a Gridnode. Multi-signature \u00b6 Setting up multi-signature in PKT Electrum is the same as with Bitcoin Electrum so you can follow this tutorial: https://electrum.readthedocs.io/en/latest/multisig.html How it works \u00b6 PKT Electrum is significantly similar to Bitcoin Electrum. It contacts one of a pool of community operated electrumx servers. Instead of syncing the entire chain it requests information about its addresses from the electrumx server and only downloads enough of the blockchain to verify that the electrumx server is not trying to trick it. In practice this means the wallet needs to check the proof of work and sync the block headers but not the rest of the blocks. Since PKT uses PacketCrypt proof of work, the work verification needs to be different. PacketCrypt headers are fairly large, between 4KB and 16KB, even at only 4KB each they make up 2.1GB of data per year. To maintain security without downloading an unacceptably large amount of data, PKT Electrum downloads only a small number of PacketCrypt proofs near the tip of the chain. If the wallet only downloaded (say) the most recent 100 PacketCrypt proofs, an attacking electrumx server would know exactly how many blocks it needed to mine in order to create a convincing fake chain, PKT Electrum makes this more difficult by using statistical verification. Statistical Verification \u00b6 PKT Electrum makes the job of an attacker hard by asking for an unpredictable random set of PacketCrypt proofs, the chance of any give block being verified is based on the distance between the tip of the chain and that block. The chance is defined as MIN(100%, K / distance_from_tip) where K is a constant which we set at 20 to make PKT Electrum verify around 200 blocks total. With K = 20 , the first 20 blocks have a 100% chance of being verified. * block 21 has a 95% chance * block 25 has an 80% chance * block 50 has a 40% chance * block 80 has a 25% chance The distribution of likelyhood of verifying a block is shown by this chart: Running an ElectrumX server \u00b6 If you would like to participate in running your own ElectrumX server to help the PKT Electrum network, you can do so using a simple Docker command. Check out the Docker PKT Electrumx project for more information about how to run an instance. It is important to keep your seed and password written down in a safe place where you will remember it. If your PKT Electrum wallet is mined into, it will break. You will then need to migrate your PKT Electrum wallet to a PKT CLI wallet using the following instructions. Migrating from Electrum to PKTWallet \u00b6 If you have an electrum based wallet which becomes overloaded from too many transactions (e.g. from mining directly into it), then you will need to migrate your keys to a pktwallet instance. Step 1: Setup pktwallet \u00b6 Follow the instructions in pktwallet to get your wallet up and running Step 2: Export your keys \u00b6 In Electrum, click Wallet -> Private Keys -> Export You will be prompted to enter your Electrum wallet password, then a window should appear showing your keys KEEP THESE KEYS SECRET Find an address which you want to migrate and copy the key with that address Do not copy the part which says p2wpkh: , just the letters after it The key will look sometihng like this: ci2TBp2HTWtyMQtizWMuugHxG6lNpInA1bSpLIWzjJS2AI8ObwV5 Step 3: Import key to pktwallet \u00b6 In a terminal window, run pktctl --wallet getbalance to verify that your wallet is working Unlock your wallet using pktctl --wallet walletpassphrase 1000000 Type pktctl --wallet importprivkey You should see the address printed on the screen Importing more keys \u00b6 When you import a key, it starts a rescan of the chain automatically, in order to import more you need to stop pktctl --wallet stopresync to stop Speed things up \u00b6 If you know exactly when an address was paid, you can speed up the import by only rescanning blocks where it might have been paid. For example if you are sure that the address was not paid earlier than block number 600000 you can do the following: pktctl --wallet stopresync pktctl --wallet resync 600000 100000000 Check that it's working \u00b6 It's recommended that you run pktwallet with -d debug flag in order to be able to see the debug logs. When you are resyncing you should see log lines like the following: 1609188780 [DBG] wallet.go:2817 Rescan cycle [620100] 1609188781 [DBG] wallet.go:2817 Rescan cycle [620200] 1609188782 [DBG] wallet.go:2817 Rescan cycle [620300] 1609188783 [DBG] wallet.go:2817 Rescan cycle [620400] The number if the block number which is being scanned. Troubleshooting \u00b6 ErrBirthdayBlockNotSet: birthday block not set Your wallet is not synced yet, wait for it to become synced","title":"Installing PKT Electrum (Mac/Windows)"},{"location":"wallet_setup/install-pkt-electrum/#installing-pkt-electrum-macwindows","text":"Important Electrum is a good lightweight wallet for making and receiving payments, but it lacks scalability and is not appropriate for mining , if you are interested in mining PKT, see pktwallet .","title":"Installing PKT Electrum (Mac/Windows)"},{"location":"wallet_setup/install-pkt-electrum/#first-setup","text":"","title":"First setup"},{"location":"wallet_setup/install-pkt-electrum/#macos","text":"Download the file ending with .dmg from the latest PKT Electrum Releases Open Finder Double-click on your Downloads folder and find and click on electrum-pkt-4.0.2.dmg A new window will open with the PKT Electrum app, click and drag it into your Applications folder Press Command+Space to open your Spotlight Search and type PKT Electrum, when you see the PKT Electrum app, press the Enter key to open it. The first time PKT Electrum is opened, you will get a popup asking you if you want to open it, click open Continue with Setting up your wallet below","title":"MacOS"},{"location":"wallet_setup/install-pkt-electrum/#windows","text":"Download the file ending with .exe from the latest PKT Electrum Releases You will see a popup window telling you the application is not signed by a Microsoft Authorized Developer, always be sure you download PKT Electrum from the original website, do not run any app given to you in a chat, file-sharing or email attachment. Click \"More info\" to show additional options. Click the \"Run anyway\" button to launch PKT Electrum, you won't see this message again. Follow the steps in the setup process. Go to your desktop and you should see a new icon labeled PKT Electrum , click on it. Continue with Setting up your wallet below.","title":"Windows"},{"location":"wallet_setup/install-pkt-electrum/#linux","text":"Download the file ending with .AppImage from the latest PKT Electrum Releases Click on the downloaded file and PKT Electrum should start up right away.","title":"Linux"},{"location":"wallet_setup/install-pkt-electrum/#setting-up-your-wallet","text":"Before you can begin using PKT, you need to setup your wallet, this means writing down your secret key and setting passwords so your PKT will stay safe. First you will be asked if you want to configure the server to connect to, unless you are an advanced user, just click \"next\" Next select your wallet, you give your wallet a name if you wish, or leave it as default_wallet , then click \"next\". You will be prompted to select which type of wallet you are creating, unless you are doing something fancy, you'll want to just click \"next\" Next you will have the option to create a wallet using a secret key from different sources, for the purposes of this tutorial just click next. Next you will be asked if you want to create a \"legacy\" style wallet, this is not needed so just click \"next\" Now PKT Electrum is going to create a seed , it takes the form of 12 words and from it your entire wallet is created If you have these 12 special words, you can recover your PKT even if your computer is lost or damaged If someone else gets access to these 12 words, they can steal all of your PKT It is recommended that you write this on paper and keep in a safe place. After you have written your seed, you will be asked to type it back in, the fast way to do this is by copy/paste to a text pad Now you'll be asked to write it back in, you can copy it from the text pad Make sure you really stored your seed on paper, we do not recommend storing it on any electronic device . Now you will need to pick a passphrase for your wallet This passphrase encrypts your wallet, protecting your PKT even if your computer is stolen Unlike your seed, the passphrase is useless without the wallet file We recommend using https://www.useapassphrase.com/ to pick a strong passphrase for you You can store your passphrase on your phone to have easy access Congratulations, you now have a PKT wallet! It will require about 5 minutes to synchronize with the PKT blockchain, but you can still use it while this is happening.","title":"Setting up your wallet"},{"location":"wallet_setup/install-pkt-electrum/#receiving-pkt","text":"To receive coins, you need to create a new PKT address Click the \"Receive\" tab Type a description for the purpose of receiving the coins, this will appear in the notification when you get paid Set the expiration, if this is not an invoice , you can choose \"never\" After you click \"Request\", your wallet will create a new address and copy it to your clipboard so you can send it to the person paying you (or transfer money to your new wallet) When PKT gets sent to your new address, you will get a notification. It says \"unconfirmed\" because the transaction has not yet been included in the history of the blockchain. Once your transaction has been included in the blockchain, this icon will change to a clock and then after a few minutes, a checkmark Congratulations, you have received your first PKT","title":"Receiving PKT"},{"location":"wallet_setup/install-pkt-electrum/#sending-pkt","text":"To pay PKT to someone else, click on the Send tab and paste the address to be paid Type a description of the payment, this is just for you, it will not be sent to the person you are paying Enter the amount to be paid Click Pay You will be prompted to enter your wallet passphrase in order to decrypt the wallet for one brief moment to send the PKT Every transaction requires a fee for inclusion in the blockchain, this is a very small cost: 132 nPKT is one hundred and thirty two nano-PKT (that means billionths , i.e. 0.000000132 PKT) After you enter your passphrase and click \"send\", you will see a transaction ID , this set of numbers and letters uniquely identifies your transaction and can be used to view it in the block explorer. Just like when receiving, your transaction will appear first as \"unconfirmed\" and then later it will switch to a clock when it has been included in the blockchain. After waiting a few minutes, you will see a clock and then later a checkmark indicating your transaction has been included in the blockchain When people consider a transaction to be \"complete\" depends on the merchant, but in general it should be considered to be ok once it switches from \"unconfirmed\" to the clock icon. Congratulations, you've sent PKT!","title":"Sending PKT"},{"location":"wallet_setup/install-pkt-electrum/#about-units","text":"Each PKT is made up of 1000 milli-PKT, denoted mPKT Each milli-PKT is sub-divided into 1000 micro-PKT, denoted uPKT Each micro-PKT is sub-divided into 1000 nano-PKT, denoted nPKT","title":"About Units"},{"location":"wallet_setup/install-pkt-electrum/#advanced-usage","text":"","title":"Advanced usage"},{"location":"wallet_setup/install-pkt-electrum/#recover-from-seed","text":"You can recover a PKT Electrum wallet from the seed you were given when you set it up. To do this follow the same instructions as for any other Electrum wallet: https://bitcoinelectrum.com/restoring-your-standard-wallet-from-seed/ Note that recovery from seed will not work to import addresses from other wallets such as a Gridnode.","title":"Recover from seed"},{"location":"wallet_setup/install-pkt-electrum/#multi-signature","text":"Setting up multi-signature in PKT Electrum is the same as with Bitcoin Electrum so you can follow this tutorial: https://electrum.readthedocs.io/en/latest/multisig.html","title":"Multi-signature"},{"location":"wallet_setup/install-pkt-electrum/#how-it-works","text":"PKT Electrum is significantly similar to Bitcoin Electrum. It contacts one of a pool of community operated electrumx servers. Instead of syncing the entire chain it requests information about its addresses from the electrumx server and only downloads enough of the blockchain to verify that the electrumx server is not trying to trick it. In practice this means the wallet needs to check the proof of work and sync the block headers but not the rest of the blocks. Since PKT uses PacketCrypt proof of work, the work verification needs to be different. PacketCrypt headers are fairly large, between 4KB and 16KB, even at only 4KB each they make up 2.1GB of data per year. To maintain security without downloading an unacceptably large amount of data, PKT Electrum downloads only a small number of PacketCrypt proofs near the tip of the chain. If the wallet only downloaded (say) the most recent 100 PacketCrypt proofs, an attacking electrumx server would know exactly how many blocks it needed to mine in order to create a convincing fake chain, PKT Electrum makes this more difficult by using statistical verification.","title":"How it works"},{"location":"wallet_setup/install-pkt-electrum/#statistical-verification","text":"PKT Electrum makes the job of an attacker hard by asking for an unpredictable random set of PacketCrypt proofs, the chance of any give block being verified is based on the distance between the tip of the chain and that block. The chance is defined as MIN(100%, K / distance_from_tip) where K is a constant which we set at 20 to make PKT Electrum verify around 200 blocks total. With K = 20 , the first 20 blocks have a 100% chance of being verified. * block 21 has a 95% chance * block 25 has an 80% chance * block 50 has a 40% chance * block 80 has a 25% chance The distribution of likelyhood of verifying a block is shown by this chart:","title":"Statistical Verification"},{"location":"wallet_setup/install-pkt-electrum/#running-an-electrumx-server","text":"If you would like to participate in running your own ElectrumX server to help the PKT Electrum network, you can do so using a simple Docker command. Check out the Docker PKT Electrumx project for more information about how to run an instance. It is important to keep your seed and password written down in a safe place where you will remember it. If your PKT Electrum wallet is mined into, it will break. You will then need to migrate your PKT Electrum wallet to a PKT CLI wallet using the following instructions.","title":"Running an ElectrumX server"},{"location":"wallet_setup/install-pkt-electrum/#migrating-from-electrum-to-pktwallet","text":"If you have an electrum based wallet which becomes overloaded from too many transactions (e.g. from mining directly into it), then you will need to migrate your keys to a pktwallet instance.","title":"Migrating from Electrum to PKTWallet"},{"location":"wallet_setup/install-pkt-electrum/#step-1-setup-pktwallet","text":"Follow the instructions in pktwallet to get your wallet up and running","title":"Step 1: Setup pktwallet"},{"location":"wallet_setup/install-pkt-electrum/#step-2-export-your-keys","text":"In Electrum, click Wallet -> Private Keys -> Export You will be prompted to enter your Electrum wallet password, then a window should appear showing your keys KEEP THESE KEYS SECRET Find an address which you want to migrate and copy the key with that address Do not copy the part which says p2wpkh: , just the letters after it The key will look sometihng like this: ci2TBp2HTWtyMQtizWMuugHxG6lNpInA1bSpLIWzjJS2AI8ObwV5","title":"Step 2: Export your keys"},{"location":"wallet_setup/install-pkt-electrum/#step-3-import-key-to-pktwallet","text":"In a terminal window, run pktctl --wallet getbalance to verify that your wallet is working Unlock your wallet using pktctl --wallet walletpassphrase 1000000 Type pktctl --wallet importprivkey You should see the address printed on the screen","title":"Step 3: Import key to pktwallet"},{"location":"wallet_setup/install-pkt-electrum/#importing-more-keys","text":"When you import a key, it starts a rescan of the chain automatically, in order to import more you need to stop pktctl --wallet stopresync to stop","title":"Importing more keys"},{"location":"wallet_setup/install-pkt-electrum/#speed-things-up","text":"If you know exactly when an address was paid, you can speed up the import by only rescanning blocks where it might have been paid. For example if you are sure that the address was not paid earlier than block number 600000 you can do the following: pktctl --wallet stopresync pktctl --wallet resync 600000 100000000","title":"Speed things up"},{"location":"wallet_setup/install-pkt-electrum/#check-that-its-working","text":"It's recommended that you run pktwallet with -d debug flag in order to be able to see the debug logs. When you are resyncing you should see log lines like the following: 1609188780 [DBG] wallet.go:2817 Rescan cycle [620100] 1609188781 [DBG] wallet.go:2817 Rescan cycle [620200] 1609188782 [DBG] wallet.go:2817 Rescan cycle [620300] 1609188783 [DBG] wallet.go:2817 Rescan cycle [620400] The number if the block number which is being scanned.","title":"Check that it's working"},{"location":"wallet_setup/install-pkt-electrum/#troubleshooting","text":"ErrBirthdayBlockNotSet: birthday block not set Your wallet is not synced yet, wait for it to become synced","title":"Troubleshooting"},{"location":"wallet_setup/pkt-cli-wallet/","text":"Installing PKT CLI Wallet (Mac / Windows / Linux) \u00b6 The command line PKT wallet First Time Installation and Launching \u00b6 Download pktd \u00b6 Microsoft Windows \u00b6 Download the most recent zip archive suffixed with -windows.zip available from pktd releases page For example: pktd-v1.4.0-windows.zip Unarchive the content of the zip file Open the command prompt and navigate to the bin directory in the extracted archive For Example: cd Downloads\\pktd*\\bin Follow the instructions below but In place of ./bin/pktwallet , use pktwallet.exe In place of ./bin/pktctl , use pktctl.exe MacOS and Linux \u00b6 Download one of the most recent packages available for Linux or MacOS from pktd releases page For example, for pktd-v1.4.0 release: For MacOS , after having downloaded pktd-v1.4.0-macos.pkg , install pktwallet and other utilities by clicking on the package icon in the Finder. For Linux , after having downloaded one of the following packages: pktd-v1.4.0-linux.deb (Debian or Ubuntu) pktd-v1.4.0-linux.rpm (Fedora or RedHat) pktd AUR package (Arch linux or Manjaro), install pktwallet and other utilities by clicking on the appropriate package icon or running an installation command Creating a New Wallet \u00b6 To create a new PKT wallet, use the pktwallet --create command: ./bin/pktwallet --create You will be prompted to follow a few steps. Make sure you write your seed words on paper so that you can recover your funds even if your computer is damaged. Do not skip this step. You will thank yourself later. Keep it secret. Keep it safe. Launching pktwallet \u00b6 After creating your wallet, you can launch pktwallet with: ./bin/pktwallet Watch the output from the logs and when you see a log line like this: 1608294386 [INF] headerlogger.go:64 Processed 1 block in the last 24.82s (height 702781, 2020-12-18 13:26:01 +0100 CET) Compare the height number in the log line (e.g. 702781) to the number in the pkt block explorer to see when your wallet is up to date. A complete sync from a new installation can take 12+ hours. During this time, the balance in your wallet will not be accurate and you will be unable to transact. You may, however, proceed with creating an address while syncing, as detailed below. Creating a New PKT Address \u00b6 While pktwallet is running in the background (or in another terminal), use the following command: ./bin/pktctl --wallet getnewaddress You should see a series of numbers and letters beginning with pkt1 . This is your newly created PKT address which you can use for receiving coins. If you need to view it after creation, the address, along with the balance, can be seen in the output from running: ./bin/pktctl --wallet getaddressbalances 1 1 NOTE : Every time you use getnewaddress , the address you receive must be remembered by pktwallet forever. So, only use it when you actually need an address. How to install the PKT World Wallet (Windows only) \u00b6 Download the PKT World Wallet Follow the installation instructions Launch wallet Create a new wallet Enter a wallet passphrase. Make sure to save your passphrase in a safe place. Write down your wallet seed. It is very important to keep your seed in a safe place To generate a new PKT address, click Wallet. Generate new address To begin mining using the PKT World Wallet, click Miner Start Mining How to install a CLI Wallet \u00b6 If you already have a wallet created on your computer called wallet.db you will need to create a new wallet by following these steps: Download pktd-v1.5.1-macos.pkg Run the installation Open Terminal Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktwallet --create --wallet xxxx xxxx is the name of the wallet i.e. wallet personal Make sure to write this down for your notes Enter passphrase or leave empty Make sure to write this down for you notes Do NOT add additional layer of security Copy down your seed. If your wallet is destroyed, you can recover it as long as you have this seed and your wallet passphrase. Please keep in mind that anyone who has access to the seed only needs to guess your wallet passphrase to access your funds. Follow the instructions to finalize wallet How to start up CLI Wallet \u00b6 Open terminal Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktwallet --wallet (whatever you named your wallet) i.e wallet personal How to create new PKT wallet address \u00b6 Make sure you have the CLI wallet running in a separate terminal window Open Terminal Enter command: $ cd pktd Enter command: $ ~/pktd/bin/pktctl --wallet getnewaddress Save your address in a safe place that is easily accessible How to send PKT from your CLI wallet \u00b6 Make sure you have the CLI wallet running in a separate terminal window Command click on file to open Open terminal Enter command: $ cd pktd Enter Command: $ ~/pktd/pktd/bin/pktctl --wallet sendfrom pkt1xxxxx $$$$ '[\"pkt1xxxxx\"]' xxxxx = PKT address you want to send from and to $$$$ = amount of pkt you want to send How to install a CLI Wallet from Seed \u00b6 If you already have a wallet created on your computer called wallet.db you will need to create a new wallet by following these steps: Download pktd-v1.5.1-macos.pkg Command click on file to open Run the installation Open Terminal Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktwallet --create --wallet xxxx xxxx is the name of the wallet i.e. wallet personal Make sure to write this down for your notes Enter passphrase or leave empty Make sure to write this down for you notes Do NOT add additional layer of security Enter seed Start up wallet (see instructions above) Open new terminal window Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktctl --wallet getnewaddress repeat until you find receive (each of) your recovered wallet address(es) Enter the command: $ ~/pktd/bin/pktctl --wallet resync This will resync the wallet to the blockchain (takes at least 24 hours) Enter the command: $ ~/pktd/bin/pktctl --wallet getaddressbalances 1 1 this is how you view all your (sub)wallet balances Using Your Wallet \u00b6 pktctl is the program that interfaces with a running pktwallet instance. pktctl functions will not work if pktwallet is not running and accessible. Some functions will be limited until pktwallet is fully synchronized. Some functions require the wallet being unlocked before executing. Getting Your Balance \u00b6 You can check your current PKT balance using pktctl or you can check the balances of each of your addresses if you have more than one. ./bin/pktctl --wallet getbalance or: ./bin/pktctl --wallet getaddressbalances getaddressbalances by itself will not show 0 balance addresses you may have created. To show these addresses, use: ./bin/pktctl --wallet getaddressbalances 1 1 For more explanation of the meaning of the output of getaddressbalances , use: ./bin/pktctl --wallet help getaddressbalances Unlocking Wallet \u00b6 While many functions can be performed while the wallet is locked, other functions first require the wallet to be unlocked, including sending PKT and folding. The passphrase used to unlock the wallet was set when creating the wallet. To unlock your wallet for 120 seconds (this can be changed to your liking), use: ./bin/pktctl --wallet walletpassphrase 120 To keep your wallet unlocked, use: ./bin/pktctl --wallet walletpassphrase 0 If using 0 as in the previous example to keep your wallet indefinitely unlocked, it will stay unlocked until you either restart pktwallet or run: ./bin/pktctl --wallet walletlock NOTE: Special characters (e.g., !, #, & *) in your passphrase may be incorrectly interpreted by your shell. You may need to wrap your passphrase in quotes. ./bin/pktctl --wallet walletpassphrase 'suP3r_S3cReT^P@s5W0Rd!' 120 Sending PKT \u00b6 You can send PKT using the sendtoaddress command, but first you must unlock your wallet for sending, as shown in the previous step. To send cjd a 10 PKT tip: ./bin/pktctl --wallet sendtoaddress pkt1qt8xe7dwpelngtcpsgn5nkj3pwwdm7gf3l4auax 10 Sending PKT from Specific Address \u00b6 pktwallet gives you control over which addresses are used for making a payment. This means you can keep different PKT in your wallet separate, for example separating business transactions from personal transactions. NOTE : PKT is not a \"privacy coin\", so transactions are still shown in the blockchain like with Bitcoin. Unlock wallet: ./bin/pktctl --wallet walletpassphrase 60 Send 10 PKT to \"their address\" from \"your address\": ./bin/pktctl --wallet sendfrom 10 '[\"\"]' Notice the '[\" . This is because the last argument is actually a quoted JSON array . This means you can use multiple addresses as the source of a payment. For example: ./bin/pktctl --wallet sendfrom 10 '[\"\", \"\"]' Windows users require unique formatting for command prompt: pktctl.exe --wallet sendfrom 10 [\\\"\\\"] Sweeping an Address \u00b6 With pktwallet, sending 0 PKT has special significance in that it will send \"as much PKT as possible\". To sweep address into , you can use the following command: ./bin/pktctl --wallet sendfrom 0 '[\"\"]' Windows: pktctl.exe --wallet sendfrom 0 [\\\"\\\"] NOTE : Sweeping an address will send as much PKT as possible , which is not necessarily all PKT in that address. You may need to sweep multiple times before the address is empty. Folding Coins \u00b6 If you are the recipient of many transactions, such as is the case in mining, you may not be able to spend all of them at once. This is similar to someone who is paid in pennies having a difficult time using the pennies to buy a car. To solve this issue, you can consolidate all of the coins which were paid to you by folding . Folding is sweeping an address to itself . Just like in sweeping, you may need to run the command many times before you have completely folded. See FAQs for more detail. For example: ./bin/pktctl --wallet sendfrom
    0 '[\"
    \"]' Windows: pktctl.exe --wallet sendfrom
    0 [\\\"
    \\\"] Alternative GUI Wallets \u00b6 Electrum for PKT (Windows, MacOS, Linux) NOTE: Electrum is not appropriate for mining. Do NOT mine into an electrum wallet! PKT World Wallet (Windows) Zulu Wallet (MacOS) FAQs \u00b6 I have several machines mining, do I need the wallet running on each machine? \u00b6 NO! In fact, the wallet doesn't need to be running at all to mine, but you do need to ensure you have control of the address you are mining to. Should I leave pktwallet running? \u00b6 It is not a requirement to have pktwallet running to mine. However, if you leave it running, it will stay synced. This will save time when performing pktctl functions, such as folding and sending coins. If pktwallet has not been running for some time, it will need time to sync up to the current block from the time it last ran. As a safety precaution, don't forget to lock your wallet if you do keep it running. How often should I fold and why? \u00b6 The purpose of folding is to turn all your small payments (such as from mining) into quickly and easily spendable coins. If you are multi-pool mining and have rewards in every block, you will have roughly 1440 unconsolidated transactions per day - one for each block at a rate of ~ 1 block/min. If you do not fold these transactions, after awhile you'll have a huge amount of transactions to process if you wish to send the sum or portion thereof of these smaller transactions. So, while folding isn't required and will have no impact on mining if you do or do not, you're doing yourself a favor later by keeping the transactions as consolidated as possible. It is typical to fold as much as possible every day or every few days when you think about it, depending on your use case. It can also be scripted. Note that folding is a transaction itself. Depending on how much you have to fold, you may need to run the command many times. You also may need to wait for coins to confirm before folding more. Once the folding command fails or you see a very low number in the outputcount field from running ./bin/pktctl --wallet getaddressbalances 1 1 or on PKT block explorer under Unconsolidated Txns, you have successfully folded the best you can for that point in time.","title":"Installing PKT CLI Wallet (Mac/Windows/Linux)"},{"location":"wallet_setup/pkt-cli-wallet/#installing-pkt-cli-wallet-mac-windows-linux","text":"The command line PKT wallet","title":"Installing PKT CLI Wallet (Mac / Windows / Linux)"},{"location":"wallet_setup/pkt-cli-wallet/#first-time-installation-and-launching","text":"","title":"First Time Installation and Launching"},{"location":"wallet_setup/pkt-cli-wallet/#download-pktd","text":"","title":"Download pktd"},{"location":"wallet_setup/pkt-cli-wallet/#microsoft-windows","text":"Download the most recent zip archive suffixed with -windows.zip available from pktd releases page For example: pktd-v1.4.0-windows.zip Unarchive the content of the zip file Open the command prompt and navigate to the bin directory in the extracted archive For Example: cd Downloads\\pktd*\\bin Follow the instructions below but In place of ./bin/pktwallet , use pktwallet.exe In place of ./bin/pktctl , use pktctl.exe","title":"Microsoft Windows"},{"location":"wallet_setup/pkt-cli-wallet/#macos-and-linux","text":"Download one of the most recent packages available for Linux or MacOS from pktd releases page For example, for pktd-v1.4.0 release: For MacOS , after having downloaded pktd-v1.4.0-macos.pkg , install pktwallet and other utilities by clicking on the package icon in the Finder. For Linux , after having downloaded one of the following packages: pktd-v1.4.0-linux.deb (Debian or Ubuntu) pktd-v1.4.0-linux.rpm (Fedora or RedHat) pktd AUR package (Arch linux or Manjaro), install pktwallet and other utilities by clicking on the appropriate package icon or running an installation command","title":"MacOS and Linux"},{"location":"wallet_setup/pkt-cli-wallet/#creating-a-new-wallet","text":"To create a new PKT wallet, use the pktwallet --create command: ./bin/pktwallet --create You will be prompted to follow a few steps. Make sure you write your seed words on paper so that you can recover your funds even if your computer is damaged. Do not skip this step. You will thank yourself later. Keep it secret. Keep it safe.","title":"Creating a New Wallet"},{"location":"wallet_setup/pkt-cli-wallet/#launching-pktwallet","text":"After creating your wallet, you can launch pktwallet with: ./bin/pktwallet Watch the output from the logs and when you see a log line like this: 1608294386 [INF] headerlogger.go:64 Processed 1 block in the last 24.82s (height 702781, 2020-12-18 13:26:01 +0100 CET) Compare the height number in the log line (e.g. 702781) to the number in the pkt block explorer to see when your wallet is up to date. A complete sync from a new installation can take 12+ hours. During this time, the balance in your wallet will not be accurate and you will be unable to transact. You may, however, proceed with creating an address while syncing, as detailed below.","title":"Launching pktwallet"},{"location":"wallet_setup/pkt-cli-wallet/#creating-a-new-pkt-address","text":"While pktwallet is running in the background (or in another terminal), use the following command: ./bin/pktctl --wallet getnewaddress You should see a series of numbers and letters beginning with pkt1 . This is your newly created PKT address which you can use for receiving coins. If you need to view it after creation, the address, along with the balance, can be seen in the output from running: ./bin/pktctl --wallet getaddressbalances 1 1 NOTE : Every time you use getnewaddress , the address you receive must be remembered by pktwallet forever. So, only use it when you actually need an address.","title":"Creating a New PKT Address"},{"location":"wallet_setup/pkt-cli-wallet/#how-to-install-the-pkt-world-wallet-windows-only","text":"Download the PKT World Wallet Follow the installation instructions Launch wallet Create a new wallet Enter a wallet passphrase. Make sure to save your passphrase in a safe place. Write down your wallet seed. It is very important to keep your seed in a safe place To generate a new PKT address, click Wallet. Generate new address To begin mining using the PKT World Wallet, click Miner Start Mining","title":"How to install the PKT World Wallet (Windows only)"},{"location":"wallet_setup/pkt-cli-wallet/#how-to-install-a-cli-wallet","text":"If you already have a wallet created on your computer called wallet.db you will need to create a new wallet by following these steps: Download pktd-v1.5.1-macos.pkg Run the installation Open Terminal Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktwallet --create --wallet xxxx xxxx is the name of the wallet i.e. wallet personal Make sure to write this down for your notes Enter passphrase or leave empty Make sure to write this down for you notes Do NOT add additional layer of security Copy down your seed. If your wallet is destroyed, you can recover it as long as you have this seed and your wallet passphrase. Please keep in mind that anyone who has access to the seed only needs to guess your wallet passphrase to access your funds. Follow the instructions to finalize wallet","title":"How to install a CLI Wallet"},{"location":"wallet_setup/pkt-cli-wallet/#how-to-start-up-cli-wallet","text":"Open terminal Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktwallet --wallet (whatever you named your wallet) i.e wallet personal","title":"How to start up CLI Wallet"},{"location":"wallet_setup/pkt-cli-wallet/#how-to-create-new-pkt-wallet-address","text":"Make sure you have the CLI wallet running in a separate terminal window Open Terminal Enter command: $ cd pktd Enter command: $ ~/pktd/bin/pktctl --wallet getnewaddress Save your address in a safe place that is easily accessible","title":"How to create new PKT wallet address"},{"location":"wallet_setup/pkt-cli-wallet/#how-to-send-pkt-from-your-cli-wallet","text":"Make sure you have the CLI wallet running in a separate terminal window Command click on file to open Open terminal Enter command: $ cd pktd Enter Command: $ ~/pktd/pktd/bin/pktctl --wallet sendfrom pkt1xxxxx $$$$ '[\"pkt1xxxxx\"]' xxxxx = PKT address you want to send from and to $$$$ = amount of pkt you want to send","title":"How to send PKT from your CLI wallet"},{"location":"wallet_setup/pkt-cli-wallet/#how-to-install-a-cli-wallet-from-seed","text":"If you already have a wallet created on your computer called wallet.db you will need to create a new wallet by following these steps: Download pktd-v1.5.1-macos.pkg Command click on file to open Run the installation Open Terminal Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktwallet --create --wallet xxxx xxxx is the name of the wallet i.e. wallet personal Make sure to write this down for your notes Enter passphrase or leave empty Make sure to write this down for you notes Do NOT add additional layer of security Enter seed Start up wallet (see instructions above) Open new terminal window Enter the command: $ cd pktd Enter the command: $ ~/pktd/bin/pktctl --wallet getnewaddress repeat until you find receive (each of) your recovered wallet address(es) Enter the command: $ ~/pktd/bin/pktctl --wallet resync This will resync the wallet to the blockchain (takes at least 24 hours) Enter the command: $ ~/pktd/bin/pktctl --wallet getaddressbalances 1 1 this is how you view all your (sub)wallet balances","title":"How to install a CLI Wallet from Seed"},{"location":"wallet_setup/pkt-cli-wallet/#using-your-wallet","text":"pktctl is the program that interfaces with a running pktwallet instance. pktctl functions will not work if pktwallet is not running and accessible. Some functions will be limited until pktwallet is fully synchronized. Some functions require the wallet being unlocked before executing.","title":"Using Your Wallet"},{"location":"wallet_setup/pkt-cli-wallet/#getting-your-balance","text":"You can check your current PKT balance using pktctl or you can check the balances of each of your addresses if you have more than one. ./bin/pktctl --wallet getbalance or: ./bin/pktctl --wallet getaddressbalances getaddressbalances by itself will not show 0 balance addresses you may have created. To show these addresses, use: ./bin/pktctl --wallet getaddressbalances 1 1 For more explanation of the meaning of the output of getaddressbalances , use: ./bin/pktctl --wallet help getaddressbalances","title":"Getting Your Balance"},{"location":"wallet_setup/pkt-cli-wallet/#unlocking-wallet","text":"While many functions can be performed while the wallet is locked, other functions first require the wallet to be unlocked, including sending PKT and folding. The passphrase used to unlock the wallet was set when creating the wallet. To unlock your wallet for 120 seconds (this can be changed to your liking), use: ./bin/pktctl --wallet walletpassphrase 120 To keep your wallet unlocked, use: ./bin/pktctl --wallet walletpassphrase 0 If using 0 as in the previous example to keep your wallet indefinitely unlocked, it will stay unlocked until you either restart pktwallet or run: ./bin/pktctl --wallet walletlock NOTE: Special characters (e.g., !, #, & *) in your passphrase may be incorrectly interpreted by your shell. You may need to wrap your passphrase in quotes. ./bin/pktctl --wallet walletpassphrase 'suP3r_S3cReT^P@s5W0Rd!' 120","title":"Unlocking Wallet"},{"location":"wallet_setup/pkt-cli-wallet/#sending-pkt","text":"You can send PKT using the sendtoaddress command, but first you must unlock your wallet for sending, as shown in the previous step. To send cjd a 10 PKT tip: ./bin/pktctl --wallet sendtoaddress pkt1qt8xe7dwpelngtcpsgn5nkj3pwwdm7gf3l4auax 10","title":"Sending PKT"},{"location":"wallet_setup/pkt-cli-wallet/#sending-pkt-from-specific-address","text":"pktwallet gives you control over which addresses are used for making a payment. This means you can keep different PKT in your wallet separate, for example separating business transactions from personal transactions. NOTE : PKT is not a \"privacy coin\", so transactions are still shown in the blockchain like with Bitcoin. Unlock wallet: ./bin/pktctl --wallet walletpassphrase 60 Send 10 PKT to \"their address\" from \"your address\": ./bin/pktctl --wallet sendfrom 10 '[\"\"]' Notice the '[\" . This is because the last argument is actually a quoted JSON array . This means you can use multiple addresses as the source of a payment. For example: ./bin/pktctl --wallet sendfrom 10 '[\"\", \"\"]' Windows users require unique formatting for command prompt: pktctl.exe --wallet sendfrom 10 [\\\"\\\"]","title":"Sending PKT from Specific Address"},{"location":"wallet_setup/pkt-cli-wallet/#sweeping-an-address","text":"With pktwallet, sending 0 PKT has special significance in that it will send \"as much PKT as possible\". To sweep address into , you can use the following command: ./bin/pktctl --wallet sendfrom 0 '[\"\"]' Windows: pktctl.exe --wallet sendfrom 0 [\\\"\\\"] NOTE : Sweeping an address will send as much PKT as possible , which is not necessarily all PKT in that address. You may need to sweep multiple times before the address is empty.","title":"Sweeping an Address"},{"location":"wallet_setup/pkt-cli-wallet/#folding-coins","text":"If you are the recipient of many transactions, such as is the case in mining, you may not be able to spend all of them at once. This is similar to someone who is paid in pennies having a difficult time using the pennies to buy a car. To solve this issue, you can consolidate all of the coins which were paid to you by folding . Folding is sweeping an address to itself . Just like in sweeping, you may need to run the command many times before you have completely folded. See FAQs for more detail. For example: ./bin/pktctl --wallet sendfrom
    0 '[\"
    \"]' Windows: pktctl.exe --wallet sendfrom
    0 [\\\"
    \\\"]","title":"Folding Coins"},{"location":"wallet_setup/pkt-cli-wallet/#alternative-gui-wallets","text":"Electrum for PKT (Windows, MacOS, Linux) NOTE: Electrum is not appropriate for mining. Do NOT mine into an electrum wallet! PKT World Wallet (Windows) Zulu Wallet (MacOS)","title":"Alternative GUI Wallets"},{"location":"wallet_setup/pkt-cli-wallet/#faqs","text":"","title":"FAQs"},{"location":"wallet_setup/pkt-cli-wallet/#i-have-several-machines-mining-do-i-need-the-wallet-running-on-each-machine","text":"NO! In fact, the wallet doesn't need to be running at all to mine, but you do need to ensure you have control of the address you are mining to.","title":"I have several machines mining, do I need the wallet running on each machine?"},{"location":"wallet_setup/pkt-cli-wallet/#should-i-leave-pktwallet-running","text":"It is not a requirement to have pktwallet running to mine. However, if you leave it running, it will stay synced. This will save time when performing pktctl functions, such as folding and sending coins. If pktwallet has not been running for some time, it will need time to sync up to the current block from the time it last ran. As a safety precaution, don't forget to lock your wallet if you do keep it running.","title":"Should I leave pktwallet running?"},{"location":"wallet_setup/pkt-cli-wallet/#how-often-should-i-fold-and-why","text":"The purpose of folding is to turn all your small payments (such as from mining) into quickly and easily spendable coins. If you are multi-pool mining and have rewards in every block, you will have roughly 1440 unconsolidated transactions per day - one for each block at a rate of ~ 1 block/min. If you do not fold these transactions, after awhile you'll have a huge amount of transactions to process if you wish to send the sum or portion thereof of these smaller transactions. So, while folding isn't required and will have no impact on mining if you do or do not, you're doing yourself a favor later by keeping the transactions as consolidated as possible. It is typical to fold as much as possible every day or every few days when you think about it, depending on your use case. It can also be scripted. Note that folding is a transaction itself. Depending on how much you have to fold, you may need to run the command many times. You also may need to wait for coins to confirm before folding more. Once the folding command fails or you see a very low number in the outputcount field from running ./bin/pktctl --wallet getaddressbalances 1 1 or on PKT block explorer under Unconsolidated Txns, you have successfully folded the best you can for that point in time.","title":"How often should I fold and why?"},{"location":"wallet_setup/pkt-wallet-setup/","text":"How to setup a PKT Wallet \u00b6 PKT is its own unique blockchain and only interacts with specific wallets that support PKT. There are several wallet choices that may be applicable based on your needs. If you are planning on mining PKT, you will have to choose a wallet that supports mining. If you attempt to mine PKT into a wallet that does not support mining, the wallet will break and require substantial troubleshooting. Below is a list of the various PKT wallets. Please pay attention and choose the wallet that services your needs. PKT Electrum (Mac/PC) - PKT Electrum is not for mining. This is a good lightweight wallet for making and receiving payments. Click [here] for setup instructions. PKT.World Wallet (Mac/PC) - PKT.World wallet is a mining wallet for MacOS and Windows. The wallet has a clean user interface. The Windows version has a built-in miner. Click [here] for setup instructions. PKT Zulu Wallet (Mac) - PKT Zulu wallet is an early mining wallet for MacOS. This wallet is no longer community supported. It is recommended to migrate coins and mining to PKT.World wallet. Click [here] for setup instructions. PKT CLI Wallet (Mac/PC/Linux) - The PKT CLI wallet is a powerful command line mining wallet. It has greater scalability and privacy features. Many wallet developers fork PKT CLI for their wallet development. However, this wallet requires installing pktd and has no graphical user interface. Must be proficient in the command line to use this wallet. Click here for setup instructions.","title":"How to setup a PKT Wallet"},{"location":"wallet_setup/pkt-wallet-setup/#how-to-setup-a-pkt-wallet","text":"PKT is its own unique blockchain and only interacts with specific wallets that support PKT. There are several wallet choices that may be applicable based on your needs. If you are planning on mining PKT, you will have to choose a wallet that supports mining. If you attempt to mine PKT into a wallet that does not support mining, the wallet will break and require substantial troubleshooting. Below is a list of the various PKT wallets. Please pay attention and choose the wallet that services your needs. PKT Electrum (Mac/PC) - PKT Electrum is not for mining. This is a good lightweight wallet for making and receiving payments. Click [here] for setup instructions. PKT.World Wallet (Mac/PC) - PKT.World wallet is a mining wallet for MacOS and Windows. The wallet has a clean user interface. The Windows version has a built-in miner. Click [here] for setup instructions. PKT Zulu Wallet (Mac) - PKT Zulu wallet is an early mining wallet for MacOS. This wallet is no longer community supported. It is recommended to migrate coins and mining to PKT.World wallet. Click [here] for setup instructions. PKT CLI Wallet (Mac/PC/Linux) - The PKT CLI wallet is a powerful command line mining wallet. It has greater scalability and privacy features. Many wallet developers fork PKT CLI for their wallet development. However, this wallet requires installing pktd and has no graphical user interface. Must be proficient in the command line to use this wallet. Click here for setup instructions.","title":"How to setup a PKT Wallet"},{"location":"wallet_setup/pkt-world-wallet/","text":"Installing the PKT.World Wallet (Mac/Windows) \u00b6 The PKT.World wallet is one of these easiest ways to store your PKT cash. The PKT.World wallet works on both Windows and MacOS. However, the Windows wallet is also a PKT miner, while the MacOS version is only a wallet. The wallet features an easy to use graphical user interface with ongoing support from the PKT.World mining pool operator. Simply follow this link [here] to download the wallet from the PKT.World website. It is important to keep your seed and password written down in a safe place where you will remember it.","title":"Installing PKT.World Wallet (Mac/Windows)"},{"location":"wallet_setup/pkt-world-wallet/#installing-the-pktworld-wallet-macwindows","text":"The PKT.World wallet is one of these easiest ways to store your PKT cash. The PKT.World wallet works on both Windows and MacOS. However, the Windows wallet is also a PKT miner, while the MacOS version is only a wallet. The wallet features an easy to use graphical user interface with ongoing support from the PKT.World mining pool operator. Simply follow this link [here] to download the wallet from the PKT.World website. It is important to keep your seed and password written down in a safe place where you will remember it.","title":"Installing the PKT.World Wallet (Mac/Windows)"},{"location":"wallet_setup/pkt-zulu-wallet/","text":"Installing PKT Zulu Wallet (Mac) \u00b6 Paste these instructions, but change the first note: pktwallet The PKT Zulu Wallet is an early mining wallet that only works on MacOS. However, this wallet is only compatible with Big Sur MacOS version 11. Please note, this wallet is not currently being maintained by the community, so if setting up a new wallet use the PKT.World wallet instead. If you have a PKT Zulu wallet, it is recommended to transfer your coins to another wallet as soon as possible. Please note, if you are already using PKT Zulu wallet, then when you install the PKT.World wallet for MacOS [here], it may automatically recognize your wallet.db file on your computer. These instructions below are still available for people that currently have this wallet installed. It is important to keep your seed and password written down in a safe place where you will remember it.","title":"Installing PKT Zulu Wallet (Mac)"},{"location":"wallet_setup/pkt-zulu-wallet/#installing-pkt-zulu-wallet-mac","text":"Paste these instructions, but change the first note: pktwallet The PKT Zulu Wallet is an early mining wallet that only works on MacOS. However, this wallet is only compatible with Big Sur MacOS version 11. Please note, this wallet is not currently being maintained by the community, so if setting up a new wallet use the PKT.World wallet instead. If you have a PKT Zulu wallet, it is recommended to transfer your coins to another wallet as soon as possible. Please note, if you are already using PKT Zulu wallet, then when you install the PKT.World wallet for MacOS [here], it may automatically recognize your wallet.db file on your computer. These instructions below are still available for people that currently have this wallet installed. It is important to keep your seed and password written down in a safe place where you will remember it.","title":"Installing PKT Zulu Wallet (Mac)"},{"location":"wallet_setup/wallet-faq/","text":"PKT Documentation \u00b6 Documentation for the PKT project Wallet setup \u00b6 There are several wallets which you can choose from, the easiest to set up are PKT Electrum which has a Graphical UI and supports Windows, Mac and Linux. PKT Wallet which has a Graphical UI and supports MacOS and works great with miners. Pkt.world Wallet which has a Graphical UI for Windows, works with miners and includes a built-in miner. You can also setup PKT Wallet which is command line only but has greater scalability and privacy features. Mining \u00b6 PKT is mined using the PacketCrypt bandwidth hard mining algorithm. You can learn how to mine on the Mining page. Running a pktd instance \u00b6 You can setup a pktd instance using the instructions on pktd . Help and Community \u00b6 To get help with the technologies in the PKT project or to hang out in the community join us on the PKT Chat project chat.","title":"PKT Documentation"},{"location":"wallet_setup/wallet-faq/#pkt-documentation","text":"Documentation for the PKT project","title":"PKT Documentation"},{"location":"wallet_setup/wallet-faq/#wallet-setup","text":"There are several wallets which you can choose from, the easiest to set up are PKT Electrum which has a Graphical UI and supports Windows, Mac and Linux. PKT Wallet which has a Graphical UI and supports MacOS and works great with miners. Pkt.world Wallet which has a Graphical UI for Windows, works with miners and includes a built-in miner. You can also setup PKT Wallet which is command line only but has greater scalability and privacy features.","title":"Wallet setup"},{"location":"wallet_setup/wallet-faq/#mining","text":"PKT is mined using the PacketCrypt bandwidth hard mining algorithm. You can learn how to mine on the Mining page.","title":"Mining"},{"location":"wallet_setup/wallet-faq/#running-a-pktd-instance","text":"You can setup a pktd instance using the instructions on pktd .","title":"Running a pktd instance"},{"location":"wallet_setup/wallet-faq/#help-and-community","text":"To get help with the technologies in the PKT project or to hang out in the community join us on the PKT Chat project chat.","title":"Help and Community"}]} \ No newline at end of file diff --git a/site/sitemap.xml b/site/sitemap.xml index 2240fac..59a4b65 100644 --- a/site/sitemap.xml +++ b/site/sitemap.xml @@ -2,252 +2,267 @@ https://docs.pkt.cash/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/PKT_FAQ/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/cjdns_websites/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/commercial/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/communication/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/units/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/useful_tools/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/vote/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/wrapped_pkt/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/adv_learning/buy-pkt/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/adv_learning/cryptoeconomics/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/adv_learning/pktd-full-node/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/adv_learning/sell-pkt/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/adv_learning/swap-pkt-wrapped-pkt/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/community/classifieds/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/community/code_of_conduct/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/community/ethica-communication-guidelines/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/community/press-media-assets/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/dev/building-on-pkt/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/dev/cjdns/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/dev/cloud-isp/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/dev/edge-points/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/dev/packetcrypt/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/dev/pkt-lightning-deamon/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/dev/pkt-vpn/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/dev/tokenstrike/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/dev/wiif-sharing/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/electrum/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/learn/network-steward/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/learn/packetcrypt/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/learn/pkt-cash/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/learn/pkt-network/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/learn/pkt/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/learn/wpkt/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/mining/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/mining/pool_setup_guide/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/pktd/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/pktd/migrating_from_electrum/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/pktd/pktwallet/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/pktwalletgui/ - 2024-06-05 + 2024-07-12 + daily + + + https://docs.pkt.cash/running_infrastructure/cjdns_node/ + 2024-07-12 + daily + + + https://docs.pkt.cash/running_infrastructure/cjdns_website/ + 2024-07-12 + daily + + + https://docs.pkt.cash/running_infrastructure/vpn_server/ + 2024-07-12 daily https://docs.pkt.cash/start_mining/announcement-mining/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/start_mining/intro/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/start_mining/pkt-mining-pool/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/wallet_setup/install-from-seed/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/wallet_setup/install-pkt-electrum/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/wallet_setup/pkt-cli-wallet/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/wallet_setup/pkt-wallet-setup/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/wallet_setup/pkt-world-wallet/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/wallet_setup/pkt-zulu-wallet/ - 2024-06-05 + 2024-07-12 daily https://docs.pkt.cash/wallet_setup/wallet-faq/ - 2024-06-05 + 2024-07-12 daily \ No newline at end of file diff --git a/site/sitemap.xml.gz b/site/sitemap.xml.gz index d6f720fc696f9936e9666dbb29242e6c02da2e50..c7b68976e710a2be7fe0ea144c19321582bcae8f 100644 GIT binary patch literal 706 zcmV;z0zLg7iwFqNN04R$|8r?{Wo=<_E_iKh0M*$$Z`&{s0N_2p!thSZ2@3Q9$3d4Y zU0NWW1%^CHtoaI$wCeu)9woK4Q6T72;H<%xX+ioxk#|RF_we1>)e#b!;P2PBo9%i9 zUIlG@f4~0v^eEn~ANDu9k}N`A(ZL??*F(x?dlOf@X>pK4@S~MIa^jdyk`x6)Bbp#Sy$@lYD9vT@+1cKqF%$4a_!lEzKug z6yx56JWz@j7s*=m#b~g`1LGc!2@r(?ZKR+90sPXrh9iZ3V{3sgs8<=zs!E*dTb3{z ziWUYVM;z!LL=49B9CuNw1LP^Gv*b~-v8Eq#%|Akebo`bGznsU&l9s~(JmzE$z>zl^ z(+M18ss#o!A6QU1701mr6=aQvJce`-m|>Jj^F%U^FAI=nF2{#le{{=zW((vA8yU)+ z@eHHfqKYBdmdfK2+o`PQ#;l8ZmL_NVM9U%Hw_OUZ<(f1mD}9X8TF4A_GmOR_H(M&c z&XCslF4093t+f>Js{;s(YnQ*M{wDZLNHD{$bm;2GvG zytEumfwiz!KJ%`qnTg#ig(+Cg`I35*=+=rF{{;f*tI*aS=9;W7z*C8Cjo_KN{-Vwe oVs2oM4aw?j>DeE}mTRysBcPKn|DQR1(Pj5P0a*oEz&9cQ04T**J^%m! literal 666 zcmV;L0%iRliwFo%fL~?;|8r?{Wo=<_E_iKh0M*#dj?*v@0O0#RMb*2TvH}FC?TX7@ zxPY{rBdUE?khNIkc&3C7&G6jGf)XcV|~8NN9rJuU~Dp>lJtv zwDJ9Z{q^ZlyjwpU?sg?vguJ589{1}Z=lG#%#&O)B$>3zfO-Ox%YM>w3ERD@}^L~A} zThUQ3FrQ7w&IWa;S3$ar4hlE%m^Vt|(CnJ}-(^>c*#&*L-`>9#+qYu-hPo_m7v0n# zeGgrNmxGqZo_Ebf%WPzMxTM7*&-xt#4VvY$#e7 zj2v;Gdk`@g&vV{Isg97RqRx^>#m1U`$hH0m4bt)3BK&fmB1>8hNAQ@FIRZ!CXiO(? zkf|;(nEAkh%BeVRu4zHmc*tW&M}ZkenKVx%BrJ+~a1$EK_cm zFp=Je;uSdXS?~<#D=%$4QeZ8tHEuo?H3zYKc|1+aIWy8|65U!+BV8bXz6os|VXkTE z3Op^wtPwnO)L+!OLCg*8u_0M~D2 AQUCw| diff --git a/site/start_mining/announcement-mining/index.html b/site/start_mining/announcement-mining/index.html index 35feff3..467ce5e 100644 --- a/site/start_mining/announcement-mining/index.html +++ b/site/start_mining/announcement-mining/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/start_mining/intro/index.html b/site/start_mining/intro/index.html index ca4c990..c088f24 100644 --- a/site/start_mining/intro/index.html +++ b/site/start_mining/intro/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/start_mining/pkt-mining-pool/index.html b/site/start_mining/pkt-mining-pool/index.html index f2743c7..759fbea 100644 --- a/site/start_mining/pkt-mining-pool/index.html +++ b/site/start_mining/pkt-mining-pool/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/units/index.html b/site/units/index.html index 92ea377..d753ad6 100644 --- a/site/units/index.html +++ b/site/units/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/useful_tools/index.html b/site/useful_tools/index.html index 53efb94..6de01bc 100644 --- a/site/useful_tools/index.html +++ b/site/useful_tools/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/vote/index.html b/site/vote/index.html index e0b59cb..b301fa0 100644 --- a/site/vote/index.html +++ b/site/vote/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/wallet_setup/install-from-seed/index.html b/site/wallet_setup/install-from-seed/index.html index 01df570..a7d1e77 100644 --- a/site/wallet_setup/install-from-seed/index.html +++ b/site/wallet_setup/install-from-seed/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/wallet_setup/install-pkt-electrum/index.html b/site/wallet_setup/install-pkt-electrum/index.html index c2e24a6..f070c1d 100644 --- a/site/wallet_setup/install-pkt-electrum/index.html +++ b/site/wallet_setup/install-pkt-electrum/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/wallet_setup/pkt-cli-wallet/index.html b/site/wallet_setup/pkt-cli-wallet/index.html index f60cb0a..f23f44a 100644 --- a/site/wallet_setup/pkt-cli-wallet/index.html +++ b/site/wallet_setup/pkt-cli-wallet/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/wallet_setup/pkt-wallet-setup/index.html b/site/wallet_setup/pkt-wallet-setup/index.html index 954e232..b8f2fe9 100644 --- a/site/wallet_setup/pkt-wallet-setup/index.html +++ b/site/wallet_setup/pkt-wallet-setup/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/wallet_setup/pkt-world-wallet/index.html b/site/wallet_setup/pkt-world-wallet/index.html index 9160814..d296667 100644 --- a/site/wallet_setup/pkt-world-wallet/index.html +++ b/site/wallet_setup/pkt-world-wallet/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/wallet_setup/pkt-zulu-wallet/index.html b/site/wallet_setup/pkt-zulu-wallet/index.html index 63c6d39..3d26872 100644 --- a/site/wallet_setup/pkt-zulu-wallet/index.html +++ b/site/wallet_setup/pkt-zulu-wallet/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/wallet_setup/wallet-faq/index.html b/site/wallet_setup/wallet-faq/index.html index c83f053..14a2140 100644 --- a/site/wallet_setup/wallet-faq/index.html +++ b/site/wallet_setup/wallet-faq/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + + diff --git a/site/wrapped_pkt/index.html b/site/wrapped_pkt/index.html index 1e5ec52..923f301 100644 --- a/site/wrapped_pkt/index.html +++ b/site/wrapped_pkt/index.html @@ -185,6 +185,24 @@
  • How to Setup a PKT Mining Pool +
  • + + +