> ## Content Index
> Fetch the complete content index at: https://btcpeers.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# A Solana Vault Walkthrough Shows Why the Same Program ID Can Run New Code
- URL: https://btcpeers.com/solana-vault-pinocchio-program-id-upgrade-authority/
- Published: 2026-11-07T08:33:27.000Z
- Updated: 2026-11-07T08:33:27.000Z
- Description: A Pinocchio vault walkthrough shows how Solana separates a program’s public address from its executable code, and where users can check who can replace that code.
- Author: John Williams
- Tags: News

In a November 6 walkthrough, billchen\_web3 used a two-instruction SOL vault to show how the network separates a program’s public address from the code it runs. The walkthrough uses Pinocchio, a Rust library for Solana programs. Its key point for anyone checking a protocol is that an upgrade can change the code behind a Program ID while leaving that ID intact.

> [https://t.co/tJ2We60zhd](https://t.co/tJ2We60zhd?ref=btcpeers.com)
> 
> — billchen\_web3 (@billchen818) [November 6, 2026](https://x.com/billchen818/status/2118602293226684462?ref%5Fsrc=twsrc%5Etfw&ref=btcpeers.com)

## One address, replaceable code

In the [loader-v3 design](https://solana.com/docs/core/programs/program-deployment?ref=btcpeers.com) that billchen\_web3 describes, the executable Program account points to a separate ProgramData account. ProgramData holds the compiled code and the upgrade authority. An authorized upgrade copies replacement code from a buffer into ProgramData. Wallets and other programs can keep calling the same Program ID after the change.

The example vault also shows why two kinds of control can look similar. The vault uses a [program derived address](https://solana.com/docs/core/pda?ref=btcpeers.com), which has no private key of its own. The vault program can authorize a transfer for that address through Solana’s runtime. The upgrade authority controls a different operation. It can replace the program code that decides when that transfer is allowed. The example is a teaching exercise, and the author describes it as unaudited.

## What to check on a live program

Solana’s [deployment guide](https://solana.com/docs/programs/deploying?ref=btcpeers.com) shows how to run `solana program show <program-id>` to find the program data address, its upgrade authority and its last deployment slot. If the authority has been revoked, loader-v3 prevents further upgrades to that program. A verifiable build answers a separate question by checking whether the deployed bytecode matches a build from public source.

That makes the Program ID a starting point for due diligence. A team can retain upgrade authority to patch bugs, so the next question is who controls that authority. The answer can change while the address in a wallet or integration stays familiar.