solana/web3.js 소개

15136 단어 tutorialjavascript
@solana/web3.js은 JavaScript 애플리케이션을 위해 Solana 네트워크와 통신하기 위한 기본 인터페이스입니다. TypeScript로 작성되었으며 일반적으로 Solana와 마찬가지로 JS 대신 TS를 사용하도록 강제합니다.

각 수업과 방법 및 실습에 대한 자세한 텍스트가 없으므로 배우는 가장 좋은 방법은 its auto-generated docs을 통해 조사하는 것입니다.
이 텍스트는 주요 기능과 가장 유용한 방법에 대한 간략한 설명입니다. 일반적인 사용 사례에 대한 코드 예제는 📙 Solana Cookbook에서 찾을 수 있습니다.

많은 클래스와 메서드가 있지만 프로그램에서 프로그램으로 사용할 수 있는 몇 가지가 있으며 다음 마인드맵 그래프에 표시되는 클래스 및 해당 메서드의 짧은 목록에 넣을 수 있습니다.



Link to FigJam file
@solana/web3.js의 주요 작업은 클라이언트 앱이 블록체인에서 다른 정보를 가져오고, 계정을 생성하고, 새 트랜잭션을 생성/서명/전송하고, 계정 간에 SOL을 전송하고 작업할 수 있는 몇 가지 유용한 인터페이스를 위해 Solana 블록체인과의 연결을 여는 것입니다. 키 쌍.

🔌 연결



가장 먼저 사용할 것은 Connection 개체입니다. 또한 다른 방법으로 가장 많이 청구됩니다. 이 개체는 추가 통신을 위해 선택한 Solana 네트워크(메인넷, devnet, 테스트넷)와의 연결을 생성합니다.

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

Connection를 사용하여 devnet에 일부 SOL을 요청할 수 있습니다.

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


getParsedAccountInfo()getAccountInfo()은 어떤 토큰 또는 NFT가 일부 지갑을 보유하고 있는지 찾는 것과 같이 계정에 대한 정보를 가져오는 데 매우 유용합니다.

getBalance()은 계정에 보유하고 있는 SOL 금액을 반환합니다.

confirmTransaction() & sendTransaction()은 일부 Transaction을 생성하여 블록체인으로 전송하고자 할 때 사용됩니다.

getLatestBlockhash()은 새 TX를 생성하는 동안 사용할 수 있는 최근 블록해시에 대한 정보를 반환합니다.

const recentBlockhash = await connection.getLatestBlockhash();

const transaction = new Transaction({
  recentBlockhash: recentBlockhash.blockhash,
}).add(
  SystemProgram.transfer({
    fromPubkey: payer.publicKey,
    toPubkey: payee.publicKey,
    lamports: 10,
  })
);


getProgramAccounts() 지정된 프로그램 ID가 소유한 모든 계정을 가져옵니다. 예를 들어 Candy Machine에서 만든 NFT 계정을 찾는 데 사용할 수 있습니다.

🔐 키쌍 및 공개키



다양한 Solana 라이브러리로 수행할 수 있는 다양한 작업에는 Keypair 또는 Wallet이 필요합니다. 연결된 지갑에서 하나를 사용하거나 generate() 기능을 사용하여 키 쌍을 직접 생성한 다음 해당 속성publicKeysecretKey을 사용할 수 있습니다.

let keypair = Keypair.generate();


그리고 publicKey 자체는 PublicKey 또는 toBase58()과 같은 몇 가지 편리한 메서드와 toString()을 사용하여 findProgramAddress() 클래스의 인스턴스를 반환하여 제공된 시드 텍스트에 사용할 수 있는 주소를 찾습니다.

🧾 거래 및 거래 안내



Transaction 객체는 TransactionInstruction 클래스를 사용하여 정확한 지침으로 채우는 Solana 네트워크용 새 TX를 생성하는 데 사용할 수 있습니다.

const transferTransaction = new Transaction().add(
  SystemProgram.transfer({
    fromPubkey: fromKeypair.publicKey,
    toPubkey: toKeypair.publicKey,
    lamports: 10000000,
  })
);


유용한 방법:

add()은 새로 생성된 TX에 하나 이상의 명령을 추가합니다.

const modifyComputeUnits = ComputeBudgetProgram.setComputeUnitLimit({ 
  units: 1000000 
});

const transaction = new Transaction()
  .add(modifyComputeUnits)
  .add(
    SystemProgram.transfer({
      fromPubkey: payer.publicKey,
      toPubkey: toAccount,
      lamports: 10000000,
    })
  );


sign()은 지정된 서명자와 트랜잭션에 서명합니다.

getEstimatedFee() 거래와 관련된 예상 수수료를 가져옵니다.

const fees = await transaction.getEstimatedFee(connection);


TX는 전역적으로 사용 가능한 방법으로 서명, 전송 및 확인이 가능합니다sendAndConfirmTransaction().

await web3.sendAndConfirmTransaction(connection, transaction, [fromWallet]);


각 TX는 TransactionInstruction 개체를 사용하는 TX 명령으로 채워집니다.

await transferTransaction.add(
  new TransactionInstruction({
    keys: [{ pubkey: fromKeypair.publicKey, isSigner: true, isWritable: true }],
    data: Buffer.from("Data to send in transaction", "utf-8"),
    programId: new PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),
  })
);


🛠 시스템 프로그램



SystemProgram은 트랜잭션이 시스템 프로그램과 상호작용하기 위한 팩토리 클래스입니다.

일부 SOL을 전송하려는 경우 SystemProgram과 상호 작용해야 할 수 있습니다.

const transferTransaction = new Transaction().add(
  SystemProgram.transfer({
    fromPubkey: fromKeypair.publicKey,
    toPubkey: toKeypair.publicKey,
    lamports: lamportsToSend,
  })
);


또한 createAccount() & createAccountWithSeed()을 사용하여 새 계정을 만드는 것이 유용할 수 있습니다.

const createAccountParams = {
  fromPubkey: fromPubkey.publicKey,
  newAccountPubkey: newAccountPubkey.publicKey,
  lamports: rentExemptionAmount,
  space,
  programId: SystemProgram.programId,
};

const createAccountTransaction = new Transaction().add(
  SystemProgram.createAccount(createAccountParams)
);


🧰 더 보기



위의 예는 Solana Cookbook에서 가져온 것입니다. 더 많은 것을 확인하십시오.

Solana 네트워크에서 토큰과 상호 작용하려면 다른 @solana/spl-token 패키지를 추가로 사용해야 합니다.

좋은 웹페이지 즐겨찾기