gpt4 book ai didi

python - 使用 python 发送 solana 交易

转载 作者:行者123 更新时间:2023-12-05 02:39:13 58 4
gpt4 key购买 nike

我想用 python 购买 Solana 硬币和 nfts,但我不确定通过区 block 链进行的交易是如何运作的。假设我想做这个交易:https://solscan.io/tx/5fzuhifWuBFRPtRGHRRsWsJVHuoxcgEN4USzNBu3ZS8VxwL6Fdw8BFaqU4iAEGibQpEAJyG19QhB335K1HiRtQWX这是我的代码:

import solana.system_program as sp
from solana.publickey import PublicKey
from solana.account import Account
from solana.rpc.api import Client
from solana.transaction import Transaction, TransactionInstruction, AccountMeta

# keypair = your key pair
cli = Client('https://solana-api.projectserum.com')
account = Account(keypair[:32])
new_account = Account()
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('CJsLwbP1iu5DuUikHEJnLfANgKy6stB2uFgvBBHoyxwz'),
)))
send_tx = cli.send_transaction(transaction, new_account)
print(send_tx)

我知道我现在的测试钱包中没有足够的 solana,但更多的是关于发送交易和与程序 ID 交互的一般方式。 sollet.io 交易中显示了一些数据,但我不确定是否也必须发送该数据?如果必须的话,我应该在哪里以及如何包含它?每笔交易的数据都会改变吗?我收到错误消息:

{'code': -32602, 'message': '无效交易:索引越界'}

最佳答案

您走在正确的轨道上。如果您想模拟与 Solscan 中引用的交易类似的交易,您需要创建正确的指令,包括编码数据和引用的帐户。如果没有可用的 Python 绑定(bind),这将有点困难,但脱离示例,它可能看起来有点像:

transaction = Transaction()
transaction.add(TransactionInstruction(
[
AccountMeta(
PublicKey("3LdbrFBY7sZ71MtuZhrMzK4YLgxNcTrQ5wLNZHs7r85T"),
False,
False
),
AccountMeta(
PublicKey("FABkSFDkF3Wz3CpC5JTmw44jeKvXKQvXgXFCyxhAE46X"),
False,
False
),
...
],
PublicKey("CJsLwbP1iu5DuUikHEJnLfANgKy6stB2uFgvBBHoyxwz"),
bytearray.fromhex('050000000000000000')
))

注意事项:

  • 第一个字段是 AccountMeta 的列表,与您链接的交易相同
  • 第二个字段是程序的公钥
  • 最后一个字段是“指令数据”

您还必须为交易提供有效的签名者/付款人,但之后应该会通过!

关于python - 使用 python 发送 solana 交易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69174931/

58 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com