You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Solana网络中修改已分配的Program ID

Solana合约部署与Program ID修改实操

一、基础合约部署步骤

  • 先搭好环境:确认安装了solana-cli和Rust,用solana --version和rustc --version检查版本是否正常。
  • 准备合约代码:要么用cargo new --lib my_solana_program新建一个基础合约,要么用你现有的代码,记得在Cargo.toml里加上Solana依赖,比如solana-program = "1.16.0"。
  • 编译合约:进入合约目录,跑cargo build-bpf,编译好的.so文件会在target/deploy/文件夹里。
  • 生成合约密钥对:如果没有现成的,执行solana-keygen new -o target/deploy/my_program-keypair.json,这个密钥对的地址就是你的Program ID。
  • 部署合约:执行solana program deploy target/deploy/my_program.so --keypair target/deploy/my_program-keypair.json,部署成功后会返回Program ID,一定要记好。

二、修改已分配的Program ID

注意:一旦合约部署到测试网或主网,已分配的Program ID无法直接修改——因为链上合约和这个ID(对应部署密钥对地址)是绑定死的。要换ID只能走以下流程:

  • 生成新密钥对:用solana-keygen new -o target/deploy/new_program-keypair.json生成新的密钥对,对应的地址就是新的Program ID。
  • 更新代码里的ID:如果你的合约代码用declare_id!宏硬编码了旧ID,直接把字符串换成新的Program ID,比如declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS");。
  • 重新编译:再跑一次cargo build-bpf生成新的合约文件。
  • 部署新合约:用新密钥对部署新版本,执行solana program deploy target/deploy/my_program.so --keypair target/deploy/new_program-keypair.json。
  • 迁移旧数据(可选):如果旧合约有链上数据,得自己写迁移逻辑把数据转到新合约的账户下,这部分要结合你的合约业务来做。

额外提醒

  • 本地开发或测试网可以随便折腾,主网操作要谨慎,毕竟涉及gas费和用户数据。
  • 本地环境换ID更简单:直接删掉旧的密钥对文件,重新生成再部署就行。

内容的提问来源于stack exchange,提问作者Ang Zi Rui

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 20:22:37