本篇文章假设你:
查看ledger的Wallet ID
solana-keygen pubkey usb://ledger
查看SOL钱包地址
# 查看第1个地址
solana-keygen pubkey usb://ledger?key=0/0
# 查看第2个地址
solana-keygen pubkey usb://ledger?key=1/0
# 查看第3个地址
solana-keygen pubkey usb://ledger?key=2/0
usb://ledger?key=<DERIVATION_PATH>
usb://ledger/<WALLET_ID>?key=<DERIVATION_PATH>
DERIVATION_PATH
为了和phantom钱包保持一致, 使用 x/0
, 这样ledger连接pnantom钱包的时候会显示和命令行相同的地址~/.zshrc
,添加一行 unsetopt nomatch
如果有多个ledger, 可以根据keypair url反向查询WALLET_ID,例如:
solana resolve-signer usb://ledger?key=1/0
# DwWogDGHNM5wNxcwjkroMeK83NTLpZ7ZtEbtCSrxMKNZ即为你的WALLET_ID
usb://ledger/DwWogDGHNM5wNxcwjkroMeK83NTLpZ7ZtEbtCSrxMKNZ?key=1'/0'
设置 sol network
pkill solana-test-validator
rm -rf test-ledger/
solana-test-validator
# network可以是mainnet-beta, testnet, devnet, localhost
export network=localhost
solana config set --url $network
# 设置我本地的~/.config/solana/id.json为默认的钱包,后面会用到这个钱包
solana config set --keypair ~/.config/solana/id.json
solana config get
使用普通的keypair热钱包,创建一个buffer account
solana program write-buffer target/deploy/curve_launchpad.so \
--keypair ~/.config/solana/id.json
Buffer: 3qMNULQwNWQPKKT29WPmjnfSbcpXCFSoYwZg5yLCbwty
# 如果想删除buffer account并取回sol
solana program close -k ~/.config/solana/id.json --buffers
转移buffer authority给ledger钱包
solana program set-buffer-authority <BUFFER_ADDRESS> \
--new-buffer-authority <LEDGER_PUBKEY>
比如ledger钱包地址为LdJx7GAVbb9JhaPMvLEDEZb3Fjk16Bv5R4f8qzMUQeG, 命令行如下:
solana program set-buffer-authority 3qMNULQwNWQPKKT29WPmjnfSbcpXCFSoYwZg5yLCbwty \
--new-buffer-authority LdJx7GAVbb9JhaPMvLEDEZb3Fjk16Bv5R4f8qzMUQeG
Account Type: Buffer
Authority: LdJx7GAVbb9JhaPMvLEDEZb3Fjk16Bv5R4f8qzMUQeG
接下来,可以使用ledger部署solana程序
solana program deploy \
--program-id target/deploy/curve_launchpad-keypair.json \
--buffer 3qMNULQwNWQPKKT29WPmjnfSbcpXCFSoYwZg5yLCbwty \
--upgrade-authority usb://ledger?key=0/0
Program Id: AAR4w5eyv8JXrDvmB1EJE9QmxP24KaPyRUiZU5M8pAeZ
Signature: ua19eg9EQFcgTKVn5ZHjL1JB3s4mPYYUC7f4At6bnoXSrTKqm3RZABj3JbcwtsjUYEFTrS6bCGet6SUr2PaCyyk
solana program show AAR4w5eyv8JXrDvmB1EJE9QmxP24KaPyRUiZU5M8pAeZ
Program Id: AAR4w5eyv8JXrDvmB1EJE9QmxP24KaPyRUiZU5M8pAeZ
Owner: BPFLoaderUpgradeab1e11111111111111111111111
ProgramData Address: 8nH1bnwoqbuipTWaX25pg6tDWfvDoFs1yErFTCFR39SB
Authority: LdJx7GAVbb9JhaPMvLEDEZb3Fjk16Bv5R4f8qzMUQeG # upgrade权限
Last Deployed In Slot: 937
Data Length: 506936 (0x7bc38) bytes
Balance: 3.52947864 SOL
如果合约已经部署, 可以使用ledger升级solana程序
solana program write-buffer target/deploy/curve_launchpad.so \
--keypair ~/.config/solana/id.json
Buffer: 9suJnc9cY7ZFiNPe39me1wsNqxsM9HnrokouNTnqWVV
solana program set-buffer-authority <BUFFER_ADDRESS> \
--new-buffer-authority <LEDGER_PUBKEY>
比如
solana program set-buffer-authority 9suJnc9cY7ZFiNPe39me1wsNqxsM9HnrokouNTnqWVV \
--new-buffer-authority LdJx7GAVbb9JhaPMvLEDEZb3Fjk16Bv5R4f8qzMUQeG
Account Type: Buffer
Authority: LdJx7GAVbb9JhaPMvLEDEZb3Fjk16Bv5R4f8qzMUQeG
solana program deploy --program-id <PROGRAM_ADDRESS> \
--buffer <BUFFER_ADDRESS> \
--upgrade-authority <LEDGER_PUBKEY>
比如
solana program deploy \
--program-id AAR4w5eyv8JXrDvmB1EJE9QmxP24KaPyRUiZU5M8pAeZ \
--buffer 9suJnc9cY7ZFiNPe39me1wsNqxsM9HnrokouNTnqWVV \
--upgrade-authority usb://ledger?key=0/0
Program Id: AAR4w5eyv8JXrDvmB1EJE9QmxP24KaPyRUiZU5M8pAeZ
Signature: 2zgdmJGwHwEogZArPnL9zju6LtJqXpCgTHtMw78aUmXEmgJEgi5tdFQPFNSNzoVk7cqLxVWBthoSQa1dZRqMzUvQ
solana program show AAR4w5eyv8JXrDvmB1EJE9QmxP24KaPyRUiZU5M8pAeZ
Program Id: AAR4w5eyv8JXrDvmB1EJE9QmxP24KaPyRUiZU5M8pAeZ
Owner: BPFLoaderUpgradeab1e11111111111111111111111
ProgramData Address: 8nH1bnwoqbuipTWaX25pg6tDWfvDoFs1yErFTCFR39SB
Authority: LdJx7GAVbb9JhaPMvLEDEZb3Fjk16Bv5R4f8qzMUQeG # upgrade权限
Last Deployed In Slot: 1474
Data Length: 506936 (0x7bc38) bytes
Balance: 3.52947864 SOL
参考: