如何部署一个ProgramId中带有项目特征字符的Solana程序
如果一个Solana程序的ProgramId中带有项目特征字符,比如RAYhkQxShXjqf4sPrGfmBLLeqGy8Us5eS8dwbPLczKn
,开头RAY
代表名字为RAY
的一个项目,这是一件很酷的事情,对项目的品牌很有帮助,那么该怎么实现呢?
第一步:生成ProgramId的钥匙对Keypair文件
以上面以RAY
开头为例,执行以下命令:
solana-keygen grind --starts-with RAY:1
几秒钟后,会出现提示:
Searching with 16 threads for:
2 pubkeys that start with 'RAY' and end with ''
Searched 1000000 keypairs in 2s. 0 matches found.
Wrote keypair to RAYhkQxShXjqf4sPrGfmBLLeqGy8Us5eS8dwbPLczKn.json
并在执行上述命令的目录下出现一个文件RAYhkQxShXjqf4sPrGfmBLLeqGy8Us5eS8dwbPLczKn.json
。
第二步:在Solana网络上部署该ProgramId中带有项目特征字符的Solana程序
在Anchor工程中,找到/target/deploy/xxxx-keypair.json
文件(xxxx是你的程序名字),内容是一个数组,也就是当前Solana程序的ProgramId的私钥。
现在将RAYhkQxShXjqf4sPrGfmBLLeqGy8Us5eS8dwbPLczKn.json
文件中的内容复制到xxxx-keypair.json
文件中。
在lib.rs
程序入口文件中,把原来的declare_id!("OldProgramID")
替换为declare_id!("RAYhkQxShXjqf4sPrGfmBLLeqGy8Us5eS8dwbPLczKn")
。
在Anchor.toml
文件中,把原来的[programs.localnet]
,[programs.devnet]
中的原来的ProgramID
都替换为RAYhkQxShXjqf4sPrGfmBLLeqGy8Us5eS8dwbPLczKn
。
运行anchor buidl && anchor deploy
,新的ProgramId
生效了。