【问题标题】:Transactions using solana python使用 solana python 进行交易
【发布时间】:2021-10-05 10:18:46
【问题描述】:

我正在尝试制作套利程序。虽然我无法使用 solana 编写交易代码。我确实从这里提到(Sending solana transactions with python)。我已经创建了 2 个帐户,一个使用 phantom,另一个使用 solflare。因此,以下代码中的帐户具有来自 phantom 的公钥,而 new_account 具有来自 solflare 的公钥。

def perform_transaction():
    private_key = PRIVATEKEYPHANTOM
    keypair = get_keypair(private_key)

    cli = Client('https://solana-api.projectserum.com')
    account = Account(keypair[:32])
    new_account = Account(KEYPAIRSOLFLARE[:32])
    # print(new_account.public_key())
    # print(new_account.keypair())
    transaction = Transaction()
    transaction.add(sp.create_account(sp.CreateAccountParams(
            from_pubkey=account.public_key(),
            new_account_pubkey=new_account.public_key(),
            lamports=cli.get_minimum_balance_for_rent_exemption(88).get('result'),
            space=88,
            program_id=PublicKey(a_public_key),
        )))
    send_tx = cli.send_transaction(transaction, new_account)
    print(transaction)  

我收到以下错误

raise ValueError("invalid public key input:", value) from err
ValueError: ('invalid public key input:', '<solana.account.Account object at 0x7f8ca6429d00>')

我从未处理过加密交易,这可能是一个非常简单的错误。这里有什么问题?

【问题讨论】:

    标签: python solana


    【解决方案1】:

    您可以尝试几件事。首先,您可以改用Keypair 类型,因为Account 已被弃用,特别是使用from_secret_keyhttps://github.com/michaelhly/solana-py/blob/a366253a3f043979bc6f61869ee8faad98292dc2/solana/keypair.py#L46

    如果这仍然不起作用,则私钥的格式可能不正确。 Phantom 将私钥生成为 base-64 字符串,而这些函数需要字节数组。您可以使用Import phantom wallet private key into solana CLI的一些答案在两者之间进行转换@

    【讨论】:

    • 这比以前好多了。虽然,我仍然遇到问题中提到的相同错误。
    • 另外,当我尝试使用 keypair.public_key 获取余额时,我得到 0,但是当我尝试使用我的钱包地址时,我得到了真正的余额。你有过这样的情况吗?
    • 这可能意味着私钥的格式不正确——你可以检查keypair.public_key是否等于你的钱包地址作为健全性检查。
    猜你喜欢
    • 2013-03-29
    • 2022-08-20
    • 2022-07-15
    • 1970-01-01
    • 1970-01-01
    • 2022-07-22
    • 2021-05-06
    • 1970-01-01
    • 2022-07-06
    相关资源
    最近更新 更多