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.
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:
- Pactus SDK for Javascript
- Pactus gRPC for Javascript
- Pactus JSON-RPC for Javascript
- Pactus SDK for Python
- Pactus gRPC for Python
- Pactus JSON-RPC for Python
- Pactus gRPC for Rust
- Pactus JSON-RPC for Rust
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
