Solana基础 - 如何为交易添加备忘录

2025-03-19 10:43:41

任何交易都可以利用 SPL 备忘录程序添加消息。

web3.js

import {
  Connection,
  Keypair,
  PublicKey,
  Transaction,
  LAMPORTS_PER_SOL,
  TransactionInstruction,
  sendAndConfirmTransaction,
} from "@solana/web3.js";

const feePayer = Keypair.generate();

const connection = new Connection("https://api.devnet.solana.com", "confirmed");

const airdropSignature = await connection.requestAirdrop(
  feePayer.publicKey,
  LAMPORTS_PER_SOL,
);

await connection.confirmTransaction(airdropSignature);

const lamportsToSend = 10;

const transaction = new Transaction().add(
  new TransactionInstruction({
    keys: [{ pubkey: feePayer.publicKey, isSigner: true, isWritable: true }],
    data: Buffer.from("Memo message to send in this transaction", "utf-8"),
    programId: new PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),
  }),
);

await sendAndConfirmTransaction(connection, transaction, [feePayer]);

gill

import {
  getExplorerLink,
  createTransaction,
  createSolanaClient,
  getSignatureFromTransaction,
  signTransactionMessageWithSigners,
} from "gill";
import { loadKeypairSignerFromFile } from "gill/node";
import { getAddMemoInstruction } from "gill/programs";

const { rpc, sendAndConfirmTransaction } = createSolanaClient({
  urlOrMoniker: "devnet", // or `mainnet`, `localnet`, etc
});

const { value: latestBlockhash } = await rpc.getLatestBlockhash().send();

// load a Signer from the default Solana CLI keypair file
const signer = await loadKeypairSignerFromFile();

const transaction = createTransaction({
  version: "legacy",
  feePayer: signer,
  instructions: [
    getAddMemoInstruction({
      memo: "Memo message to send in this transaction",
    }),
  ],
  latestBlockhash,
});

const signedTransaction = await signTransactionMessageWithSigners(transaction);

console.log(
  "Sending transaction:",
  getExplorerLink({
    cluster: "devnet",
    transaction: getSignatureFromTransaction(signedTransaction),
  }),
);

await sendAndConfirmTransaction(signedTransaction);

https://solana.com/zh/developers/cookbook/transactions/add-memo

当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »