![](/img/trans.png)
[英]Transaction simulation failed: Error processing Instruction 0: Cross-program invocation with unauthorized signer or writable account
[英]Is it possible to make a Solana program the signer for a transaction?
我正在嘗試使用一條指令MintOne
編寫一個 Solana 程序,該指令將單個令牌鑄造到提供的帳戶中。
看來我需要做這樣的事情:
從概念上講,我很難處理 3。程序甚至可以簽署交易嗎? 私鑰不在鏈上,所以我不知道它是如何工作的。
Solana 程序是否有可能成為簽名者? 如果不是,這種類型的用例通常如何解決?
Solana 程序是否有可能成為簽名者?
不直接,不。
任何時候如果您希望 Solana 程序簽署交易,請改用程序派生地址 (PDA)。 PDA 就像公鑰一樣,因此它們可以是鑄幣局或任何其他帳戶地址。 PDA 允許程序“偽造”交易的簽名。
對於這個用例,您可以這樣做:
invoke_signed
或CpiContext::new_with_signer
(如果您使用 Anchor)與該 PDA 一起使用這是安全的,因為 Solana 只允許該程序“偽造”PDA 簽名。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.