تايب سكريبت - سولانا ويب 3 تأكيد المعاملة @تم إيقاف الاستخدام باستخدام مثال TransactionConfirmationConfig


باستخدام هذا الكود، يعرض VS تحذيراً بأن الوظيفة قديمة:

(طريقة) Connection.confirmTransaction(strategy: string, commitment?: Commitment): Promise<RpcResponseAndContext> (+1 تحميل زائد) @مهمل — بدلاً من ذلك، استدعِ confirmTransaction باستخدام TransactionConfirmationConfig

التوقيع '(strategy: string, commitment?: Commitment): Promise' الخاص بـ 'connection.confirmTransaction' أصبح قديماً

const airDropSol = async () => {
  try {
    const connection = new Connection(clusterApiUrl("devnet"), "confirmed");
    const airdropSignature = await connection.requestAirdrop(
      publicKey,
      2 * LAMPORTS_PER_SOL
    );
    await connection.confirmTransaction(airdropSignature);
  } catch (error) {
    console.error(error);
  }
};

هل يمكن لأي شخص أن يجعل لي مثالاً باستخدام الصياغة الجديدة، من فضلك؟

الإجابة رقم 1

تبدو توقيعات الطريقة الجديدة كالآتي

confirmTransaction(
  strategy: BlockheightBasedTransactionConfirmationStrategy,
  commitment?: Commitment,
): Promise<RpcResponseAndContext<SignatureResult>>;

لذا بدلاً من TransactionSignature السابقة، فإنه يتوقع الآن BlockheightBasedTransactionConfirmationStrategy

أين

type BlockheightBasedTransactionConfirmationStrategy = {
    signature: string;
} & Readonly<{
    blockhash: string;
    lastValidBlockHeight: number;
}>

لذا ما تحتاجه هو

  const airDropSol = async () => {
    try {
      const connection = new Connection(clusterApiUrl("devnet"), "confirmed");
      const airdropSignature = await connection.requestAirdrop(
        keypair.publicKey,
        2 * LAMPORTS_PER_SOL
      );

      const latestBlockHash = await connection.getLatestBlockhash();

      await connection.confirmTransaction({
        blockhash: latestBlockHash.blockhash,
        lastValidBlockHeight: latestBlockHash.lastValidBlockHeight,
        signature: airdropSignature,
      });
    } catch (error) {
      console.error(error);
    }
  };