Solana TPU 客户端,有时交易不通过

问题描述 投票:0回答:0

我在使用 TPU 客户端时遇到了一些问题(我想将我的交易直接发送给 TPU 领导而不是 RPC url)。 语言是 TypeScript,我使用的包是 https://www.npmjs.com/package/tpu-client

为了测试客户端,我尝试发送 3 笔交易,将少量 SOL 转移到我的一个钱包。我运行了代码,它返回了这 3 个交易签名:

2mTnzG5ujQN4MPiRnDoPwzMRKSPkJBjGVLjn8KLXC9GJKiQmJVASoYn6ye3z3CC6nQKTLo9SVkREnjHzqaG6nNU
3FbK9RYtGgaGstsQmhEqiqt6E9LqgzwLRofGutT95Xr2nwQ9Qd9BjRkR5fzTN2vE2Sg2q6e5NJYGnsdCN17hqZ2N
2b2LBu9EAAucsPv5Xv8Q7GFQDTRnYFVndkMfh9Pudn4RLG8HEihSXTuo1hDq1g1eaVedjUpr1warxLFYkHm2aXaa

随时在 https://explorer.solana.com/.

上查看这些内容

然后,1 分钟后我运行了完全相同的代码并得到了这 3 个签名

29KKa2qZVeu26nNVy4V7j3UJx5Wok5LRLQvonADXKZ3T1ra1KmVxLB7o2emZjg8u633bjJhJfPP7FW6bsnS224oY
3hZ3p7RPVJEV6tVSun2FjLRhuKCn7LdSgVZs7JRXiVWZLXihWMWswUpQP7QhXnAuCN2noxeBGtSDjYwJzKgtMjVK
2V3PBuLGqDUynjAemJLoWMExTUs2cGrWAfToqKGYnQvhbhtXe5QTDNfPhzb4gZSFNSTcSwsAx75tJHLk8C81fgm8

然而,如果您查找它们,您会发现它们不存在。

我又做了几次,结果都是一样的,有时交易通过,有时没有。我觉得这很奇怪,我想知道这里是否有人能够帮助我。

我做了一些挖掘,我认为这可能是由过时的 TPU 客户端实现引起的,因为当前的官方 Rust 实现使用 QUIC,但是就像我说的那样,我不确定这是否是某些交易失败的原因。

我运行的代码是:

const tpuConnection = await TpuConnection.load("https://api.mainnet-beta.solana.com", { commitment: "processed" });
var bh = await (await tpuConnection.getLatestBlockhash({commitment: "confirmed"}))
console.log(bh)
for(var i = 0; i < 3; i++) {
    let tx = new Transaction();
    tx.add(SystemProgram.transfer({
        fromPubkey: from.publicKey, //from is my wallet keypair
        lamports: ranmax(10000, 15000), //random amount of lamports between 10000 and 15000
        toPubkey: new PublicKey("6fixxgrowcL162MojthGHZf3Tt5dHy8zPjpEN1ULYXyE")
    }))
    tx.feePayer = from.publicKey
    tx.recentBlockhash = bh.blockhash
    tx.sign(from)
    const signature = await tpuConnection.sendRawTransaction(tx.serialize())
    console.log(signature)
}

谢谢

solana web3
© www.soinside.com 2019 - 2024. All rights reserved.