Pactus 1.17.0 (Berlin) Released

Overview
Pactus Blockchain Version 1.17.0 (Berlin) 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 the Berlin release is the implementation of Native State Anchoring, introduced through Pactus Improvement Proposal 50 (PIP-50). This adds a single live, deposit-backed commitment slot to each Pactus account, enabling off-chain applications such as document stamping, DID documents, revocation registries, and service manifests to attest to a bounded digest directly in the account state.
An anchor lives in the current global state, so a pruned node can still serve it without
the historical transaction that created it, and it can be revoked by deleting the slot,
which refunds the deposit. A create and an update require a refundable deposit of at least
1 PAC, and the protocol-written timestamps come from the including block, never from the
transaction payload, so they cannot be forged. Consensus stores no application payloads,
files, or search indexes; those remain off-chain.
Together with the new payload type and the extended account serialization, the official node
exposes read, build-transaction, and change-notification APIs (GetAnchor, ListAnchors,
GetRawAnchorTransaction, and the anchor_info ZMQ topic) so wallets, indexers, and apps do
not need to invent a parallel convention. As with every protocol change, this feature is
activated through PIP-51 at protocol version 5,
once more than 75% of committee power supports it.
The GUI has received a complete visual overhaul. The modernized GTK interface introduces a sidebar navigation, redesigned node and validator dashboards, and full light and dark theme support, giving the application a cleaner and more consistent look on every platform.

Alongside the new look, the GUI replaces emoji with crisp SVG icons, shows transaction time and pager arrows in transaction lists, adds balance and stake to address lists, adds a Max button to amount fields, and can optionally start automatically on system startup.
Legacy JSON wallets can now be migrated to the modern SQLite storage. The migration is available
from the GTK GUI with a dedicated upgrade button, through a new migrate command in the CLI,
and over a new MigrateWallet gRPC endpoint, so existing users can move their wallets in place
without losing funds.
On the protocol and security side, secp256k1 account restrictions are removed after protocol
version 4, delegated withdrawals now require the stake owner’s signature, CP quorum certificates
are bound to vote height and round, and subsidy transactions are rejected by the transaction pool.
Under the hood, the release includes a faster CanVote check with O(1) map lookups and a number
of stability fixes across the node, store, and sync.
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
- gtk: replace emoji with SVG icons (#2445)
- gtk: show transaction time and pager arrows (#2437)
- gtk: add start on system startup option (#2440)
- gtk: show balance and stake in address lists (#2434)
- gtk: add Max button to amount fields (#2436)
- execution: implement PIP-50 state anchoring (#2407)
- gtk: add upgrade button for legacy JSON wallets (#2410)
- gtk: modernize the GTK GUI - sidebar, dashboards, light/dark theme (#2379)
- grpc: add MigrateWallet RPC for legacy JSON wallets (#2397)
- wallet: migrate legacy JSON wallet in place (#2393)
- cmd: add migrate command for legacy JSON wallets (#2390)
- wallet: add migration from legacy JSON to SQLite storage (#2388)
- execution: remove secp256k1 account restrictions after protocol v4 (#2381)
Fix
- gtk: refocus main window after sending tx (#2444)
- gtk: wrap committee stat cards (#2443)
- gtk: stretch entries to the dialog width (#2442)
- txpool: reject subsidy transactions (#2441)
- gtk: make the Windows tray icon clickable and visible (#2439)
- gtk: skip system tray on macOS (#2431)
- gtk: use default font backend on macOS (#2433)
- execution: require stake owner signature for delegated withdraw (#2427)
- vote: bind CP quorum certificates to vote height and round (#2426)
- packager: rename anchor from field to sender (#2425)
- linter: make BUILD_TAG=gtk make check pass with Go 1.27.2 (#2422)
- state: handle invalid genesis and fork gracefully (#2415)
- store: close the database when startup fails (#2414)
- util: fix endless download and directory check (#2412)
- sync: fix session expiry and synced check (#2416)
- gtk: set focus on PasswordEntry (#2408)
Refactor
- store: name the offsets of block records (#2420)
- gtk: use non-deprecated texture and response APIs (#2409)
- www: use netutil package (#2398)
- state: use ProtocolVersionLatest for block version upgrade (#2392)
- types: add Encode/Decode methods to Amount (#2361)
Perf
- consensus: optimize CanVote with O(1) map lookup (#2382)
You can find the full list of changes on Github, as well as the source code
