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

初始化solana-test-validator部署程序时部署合约的账户是哪个

答案

从技术实现层面看,通过solana-test-validator启动参数--bpf-program部署的程序,不存在普通用户账户作为部署操作发起方,也不是接收创世代币的账户完成的部署。

具体逻辑如下:

  • 这类部署属于创世状态直接写入操作,不是链启动后通过常规部署交易完成的:验证节点初始化创世块时,会直接把你指定的程序ID、编译好的.so程序文件内容写入初始账本的程序账户状态,整个过程发生在出块之前,不需要任何账户签名、支付链上手续费,自然不存在普通用户账户作为部署操作发起方的概念。
  • 接收创世代币的账户和这个部署流程完全无关:你命令里--mint参数指定的是创世SPL代币的铸造地址,默认情况下test-validator只会给本地默认钱包(路径通常为~/.config/solana/id.json)发放初始SOL,这个账户不会参与创世阶段的程序注入流程,也不会因为这个部署操作被扣除任何余额。
  • 只有当你在验证节点启动完成后,通过solana program deploy命令部署程序时,才会使用你本地配置的默认钱包账户作为部署者,由该账户支付部署手续费、作为程序的升级权限持有者。

你使用的启动命令具体行为:

solana-test-validator -r --mint E2F3fsS1HpsLb2VpEgsA5ztfo83CWFWW4jWpC6FvJ6qR --bpf-program J2bPahVXAHqLvc3TUKeJMxfhKWymh4C7mM1PZm4FfpKU ../program/target/deploy/program.so
  • -r参数:启动前重置本地已有测试验证节点账本
  • --mint参数:将E2F3fsS1HpsLb2VpEgsA5ztfo83CWFWW4jWpC6FvJ6qR设置为创世阶段生成的SPL代币的铸造地址
  • --bpf-program参数:将ID为J2bPahVXAHqLvc3TUKeJMxfhKWymh4C7mM1PZm4FfpKU的程序,直接以你本地路径下的program.so为逻辑内容写入创世块,该程序默认的升级权限会设置为本地默认钱包地址,这个是权限配置,和部署操作的发起方不是一个概念。

内容的提问来源于stack exchange,提问作者Jorge Martinez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 20:18:14