Pactus 1.16.0 (New Jersey) Released

July 9, 2026
Pactus 1.16.0 (New Jersey) Released

Overview

Pactus Blockchain Version 1.16.0 (New Jersey) is now available for download. This release includes the following applications:

  • Pactus GUI: The graphical user interface (GUI) for the Pactus node that is suitable for both beginners and experienced users.

  • Pactus Daemon: The command-line interface (CLI) for the Pactus node that is suitable for experienced users.

  • Pactus Shell: The command-line tool that allows users to interact with a Pactus node.

  • Pactus Wallet: The wallet software that allows users to manage their wallet and send transactions without the need to sync the entire blockchain.

Highlights

The most significant change in this release is the implementation of Block Reward Halving, introduced through Pactus Improvement Proposal 55 (PIP-55). The block reward will follow a predictable reduction schedule: starting at 1 PAC, it halves to 0.5 PAC at block 8,000,001, to 0.25 PAC at block 24,000,001, and to 0.125 PAC at block 56,000,001. This ensures a controlled and transparent monetary supply for the network over the long term.

Secp256k1 execution is now fully activated. With the protocol upgrade to version 4, transactions can be sent to Secp256k1 addresses, unlocking compatibility with the most widely adopted cryptographic curve in the blockchain industry—used by Bitcoin and many hardware wallets.

The wallet now enforces password protection for vaults, closing a gap where unencrypted wallets could be accessed without authentication. This is an important security improvement for all wallet users.

If you have any unencrypted wallets, we recommend setting a password before upgrading the node. In the new release, unencrypted wallets will not be loaded and will return an error.

The GTK GUI adds system tray support with minimize-to-tray on close, a configurable snapshot download URL, and a more intuitive wallet creation flow.

On the security front, several vulnerabilities have been addressed: a decompression bomb DoS vector (CWE-409) in P2P messages has been mitigated with an 8 MB decompression limit, a zip-slip path traversal in wallet imports has been fixed, and an unbond authorization bypass has been patched. Nil-pointer hardening across six message types further improves node resilience against malformed P2P traffic.

Under the hood, this release includes a new mock and fake test infrastructure that makes state, sandbox, and consensus tests more reliable and easier to maintain, along with numerous consensus and sync improvements including double-proposal prevention, future message discard in the consensus manager, and entropy-delayed block announcement broadcasts to reduce network spikes.

Download

To start using Pactus blockchain, download the latest version from the download page and join the Mainnet.

How to Upgrade

If you are running an older version, close it first. Then uninstall the previous version and install the newer version. If you are using the archived version, simply replace it with the new version.

Software Development Kits

Software Development Kits are available in JavaScript and Python:

Change log

This version includes several changes and improvements, such as:

Feat

  • grpc: add sync progress and blocks left to GetBlockchainInfo (#2369)
  • wallet: enforce password for vault (#2367)
  • execution: allow secp256k1 transactions (#2343)
  • state: implement PIP-55 block reward halving (#2341)
  • gtk: add system tray support with minimize-to-tray on close (#2340)
  • gtk: make snapshot url configurable in gui (#2323)
  • sync: add entropy delay to block announcement broadcast (#2329)
  • state: add TotalPower to CommitteeInfo (#2320)
  • util: add Options pattern to DecompressBuffer (#2311)

Fix

  • wallet: recalculate CRC for V6 JSON wallets (#2375)
  • state: prevent recursive lock on ChainInfo call (#2373)
  • html: add sync info to blockchain page (#2371)
  • grpc: check for unencrypted wallets (#2358)
  • wallet: enforce 32-validator limit when creating validator addresses (#2349)
  • wallet: order transactions by no instead of created_at (#2352)
  • gtk: refactor widget layout structure (#2351)
  • gtk: sync list model (#2339)
  • gtk: prevent multiple concurrent snapshot downloads in startup assistant (#2331)
  • committee: align protocol upgrade threshold with PIP-51 (#2335)
  • state: use Power() instead of Stake() in sortition evaluation (#2322)
  • sync: remove entropy delay from block announcement broadcast (#2333)
  • scripts: fix metadata path and permission check bugs (#2324)
  • sync: stop compressing bundle messages (#2310)
  • gtk: skip file lock when connecting to remote node (#2300)
  • state: sync BlockVersion on each block commit (#2304)
  • consensus: prevent double proposal on re-entry to propose state (#2302)
  • execution: check validator expiry for unbond (#2294)
  • types, message: nil-pointer check (#2292)
  • execution: unbond authorization bypass
  • sync: set limit for decompress buffer (#2290)
  • wallet: sanitize wallet path (#2289)
  • sync: prevent concurrent-map read/write for metrics (#2288)
  • consensus: discard future messages (#2283)
  • gtk: enforce left-to-right widget direction (#2285)
  • util: refactor and fix importer issues (#2245)
  • cmd: single instance for prune progress bar (#2282)
  • store: call CompactRange after pruning (#2278)
  • types: pip-54 implementation (#2277)
  • gtk: reduce the memory leaks (#2270)
  • gtk: multiple instances of the application to run simultaneously (#2269)
  • types: set maximum allowed value to 1e6 for batch transafer (#2268)
  • store: remove transactions from pruned block (#2266)

Refactor

  • state: move syncing fields to ChainInfo (#2372)
  • crypto: remove redundant _account suffix from address type strings (#2345)
  • util: migrate to gopkg/logger (#2338)
  • execution: remove redundant SafeDecrease guard in CheckLockTime (#2296)

You can find the full list of changes on Github, as well as the source code