簡體   English   中英

遇到問題嘗試使用 Solana-py 創建程序派生地址 (PDA):“沒有足夠的值來解壓(預期 2,得到 1)”

[英]Falling into issues Trying to Create a Program Derived Address (PDA) with Solana-py: "not enough values to unpack (expected 2, got 1)"

    params = system_program.CreateAccountWithSeedParams(
    base_pubkey = keypair.public_key,
    from_pubkey = keypair.public_key,
    lamports = 200,
    new_account_pubkey = greeted,
    program_id = program_id,
    seed = 'hello',
    space = 8
)

我正在獲取 output

CreateAccountWithSeedParams(from_pubkey=2ASw3tjK5bSxQxFEMsM6J3DnBozNh7drVErSwc7AtzJv, new_account_pubkey=BkuEamVXuHugbAAVurExanW1FGAejsEAa7hECYsP1j6o, base_pubkey=2ASw3tjK5bSxQxFEMsM6J3DnBozNh7drVErSwc7AtzJv, seed='hello', lamports=200, space=8, program_id=TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA)

當我使用時,問題就來了

transaction_Params = system_program.create_account_with_seed(params)

我得到了一長串的錯誤,長話短說:沒有足夠的值來解包(預期 2,得到 1)

和完整的故事: 完整的故事

任何幫助都將不僅僅是珍惜和贊賞,而且還會得到大量的感謝歡呼

看起來提供的seed實際上應該是一個直接序列化為 Rust 字符串的字典。 這是一個測試: https://github.com/michaelhly/solana-py/blob/b507d4dfe16cdaccc754b1f2bac5ed9e258ea039/tests/unit/test_system_program.py#L64

另外,如果您嘗試創建程序派生地址,您實際上需要在程序中使用invoke_signed在程序中創建它。 無法從外部創建程序派生地址,因為您需要程序為程序派生地址“簽名”。 請參閱https://solanacookbook.com/recipes/accounts.html#program-derived-addresshttps://solanacookbook.com/recipes/accounts.html#create-account-with-seed之間的區別

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM