신규: Helius가 Light Protocol을 인수했습니다
Solana 트랜잭션 생성 방법
블로그/개발

Solana Dev 101 - Solana 트랜잭션 생성 방법

개발자 경험 엔지니어X의 Owen VenterLinkedIn의 Owen Venter
읽는 데 5분

소개

GM! 이 글은 Solana Dev 101 시리즈의 일부로, Solana에서 Javascript를 사용해 트랜잭션을 생성하고 전송하는 방법을 살펴봅니다. 초보자를 위한 가이드이므로 Solana나 블록체인 기술을 처음 접해도 걱정하지 마세요.

궁금한 점이 있다면 언제든 Helius Discord에 참여하거나 X에서 Helius를 태그해 도움을 요청하세요.‍

사전 준비 사항

시작하려면 컴퓨터에 Node.js와 npm이 설치되어 있어야 합니다. 필요한 경우 여기에서 다운로드할 수 있습니다.

Solana 블록체인과 상호작용할 수 있도록 설계된 JavaScript 도구 및 라이브러리 모음인 Solana web3.js 라이브러리도 설치해야 합니다.

터미널에서 다음 코드를 실행하여 npm으로 설치할 수 있습니다.

코드
npm install @solana/web3.js

‍1단계: 연결 설정

먼저 Solana 클러스터에 연결해 보겠습니다. Helius를 사용해 devnet 클러스터에 연결합니다. Helius 계정과 API 키가 필요하며, 대시보드에서 무료로 만들 수 있습니다.

코드
const solanaWeb3 = require('@solana/web3.js');
const connection = new solanaWeb3.Connection('<https://rpc-devnet.helius.xyz/?api-key=><api_key>','confirmed',);

2단계: 새 지갑 생성

이제 트랜잭션을 전송할 지갑이 필요합니다. 지갑은 공개 키와 비공개 키의 쌍이며 간단히 생성할 수 있습니다. 공개 키는 지갑 주소이고, 비공개 키는 트랜잭션 서명에 사용됩니다. 공개 키 암호화에 관한 자세한 내용은 여기에서 확인할 수 있습니다.

새 파일 시스템 지갑을 생성할 수 있으며, 이 지갑의 키 쌍은 로컬 컴퓨터에 저장됩니다. Solana CLI 도구를 이미 설치했다면 터미널에서 다음 명령어를 실행해 새 지갑을 만드세요.

코드
solana-keygen new

설치하지 않았다면 Solana CLI 도구 모음을 설치해야 합니다. 설치 방법은 다음 Solana 문서에서 자세히 확인할 수 있습니다. https://docs.solana.com/cli/install-solana-cli-tools

그런 다음 이 지갑을 코드로 불러올 수 있습니다.

코드
const sender=solanaWeb3.Keypair.fromSecretKey(new Uint8Array([61,23,....,60,49]));

이전 단계에서 생성한 JSON 파일 시스템 지갑에서 비밀 키를 복사해 사용하면 됩니다.

3단계: 지갑에 자금 충전

트랜잭션을 전송하려면 지갑에 SOL이 있어야 합니다. Solana의 모든 트랜잭션에는 처리에 필요한 소액의 수수료가 부과됩니다.

테스트를 위해 Devnet faucet에서 지갑에 자금을 충전합니다. 대시보드의 Helius faucet을 사용하거나 CLI에서 Devnet SOL을 요청하는 방법을 따르세요. 방금 생성한 지갑의 공개 키를 입력하고 SOL을 요청하면 됩니다.

4단계: 트랜잭션 생성

이제 자금이 충전된 지갑이 있으므로 트랜잭션을 생성할 수 있습니다. 이 예제에서는 트랜잭션을 생성하고 전송 명령을 추가합니다. 이를 사용해 원하는 지갑으로 0.1 SOL을 전송합니다.

트랜잭션은 주어진 명령에 따라 다양한 작업을 수행할 수 있습니다. 이 예제에서는 전송 명령으로 SOL을 보냅니다.

코드
// Set up the address to send to
const receiver = new solanaWeb3.PublicKey("86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY");

// Create a transaction    
const transaction = new solanaWeb3.Transaction().add(solanaWeb3.SystemProgram.transfer({
fromPubkey: sender.publicKey,toPubkey: receiver,
lamports: solanaWeb3.LAMPORTS_PER_SOL * 0.01,}),);

‍위 코드에서는 원하는 지갑으로 새 PublicKey 객체를 생성합니다. 트랜잭션을 생성하려면 주소만이 아니라 PublicKey 객체가 필요합니다. 전송 명령은 다음 세 가지 매개변수도 받습니다.

  1. fromPubkey: 송신자 계정의 공개 키입니다.
  2. toPubkey: 수신자 계정의 공개 키입니다.
  3. lamports: 전송할 lamport(Solana의 최소 화폐 단위) 수량입니다. solanaWeb3.LAMPORTS_PER_SOL는 1 SOL을 나타냅니다.

5단계: 트랜잭션 서명 및 전송

트랜잭션을 생성했다면 서명한 후 네트워크로 전송해야 합니다.

Solana Web3 라이브러리에는 이 모든 작업을 간편하게 처리하는 sendAndConfirmTransaction() 함수가 있습니다.

sendAndConfirmTransaction 메서드는 트랜잭션을 네트워크로 전송하고 확정을 기다린 후 트랜잭션 서명을 반환합니다.

코드
// Sign and confirm the transaction      
const signature = await solanaWeb3.sendAndConfirmTransaction(connection,transaction,[sender],);      
console.log('Transaction: ', signature);

sendAndConfrimTransaction 메서드는 다음 세 가지 매개변수를 받습니다.

  1. connection: Helius RPC 연결을 사용해 만든 Solana 네트워크 연결 객체입니다. 트랜잭션을 전송하고 확정할 연결을 지정합니다.
  2. transaction: 방금 만든 전송 명령이 포함된 트랜잭션 객체입니다.
  3. [sender]: 트랜잭션의 모든 서명자 계정을 포함하는 배열입니다. 이 경우 트랜잭션에 서명하고 승인하는 계정을 나타내는 단일 요소 sender가 포함됩니다.

이제 완료되었습니다!

JavaScript를 사용해 Solana에서 트랜잭션을 생성하고 전송했습니다.

node sendTransaction.js를 사용해 스크립트를 실행할 수 있습니다.

마무리

Solana의 포괄적인 JavaScript 라이브러리 덕분에 JavaScript로 Solana 트랜잭션을 생성하고 전송하는 과정은 간단합니다. 몇 줄의 코드만으로 Solana 블록체인과 상호작용하며 무한한 가능성을 활용할 수 있습니다.

이 기본 예제는 트랜잭션 생성과 전송의 구조 및 흐름을 보여줍니다. 실제 애플리케이션에서는 더 복잡한 트랜잭션과 추가 보안 조치가 필요할 수 있습니다.

이 가이드가 도움이 되었기를 바랍니다. 즐겁게 코딩하세요!

전체 코드는 여기에서 확인할 수 있습니다.

리소스

‍

Helius 구독하기

최신 Solana 개발 소식을 확인하고 새 게시물 알림을 받아보세요