본문 바로가기
coding/web3

[Solana] 기본 트랜잭션 보내기

by 코딩희송 2022. 1. 9.

들어가기

솔라나 기본 트랜잭션 보내는 방법을 알아보자

지갑 연결하기

사용자가 Solana에서 dApp 또는 애플리케이션을 사용할 수 있도록 하려면 키 쌍에 액세스해야 합니다.
키 쌍은 거래에 서명하는데 사용될 일치하는 공개키가 있는 개인키입니다.

키 쌍을 얻는 방법은 두 가지가 있습니다.:
1. Generate a new Keypair
2. 시크릿 키를 사용해 Keypair 얻기

const { Keypair } = require("@solana/web3.js");
let keypair = Keypair.generate();

이렇게 하면 사용자가 애플리케이션 내에서 자금을 조달하고 사용할 수 있는 새로운 Keypair가 생성됩니다.

트랜잭션 만들기 그리고 보내기

솔라나의 프로그램과 상호작용하기 위해 네트워크로 트랜잭션을 생성, 인증해야합니다.
트랜잭션은 서명이 있는 명령 모음입니다. 명령이 트랜잭션에 존재하는 순서에 따라 실행 순서가 결정됩니다.
Solana-Web3.js의 트랜잭션은 Transaction객체를 사용하고 원하는 메시지, 주소 또는 지침을 추가하여 생성됩니다.

트랜잭션 예제:

const { Keypair, Transaction, SystemProgram, LAMPORTS_PER_SOL } = require("@solana/web3.js");

let fromKeypair = Keypair.generate();
let toKeypair = Keypair.generate();
let transaction = new Transaction();

transaction.add(
	SystemProgram.transfer({
    	fromPubkey: fromKeypair.publicKey,
        toPubkey: toKeypair.publicKey,
        lamports: LAMPORTS_PER_SOL
    })
);

위의 코드는 서명하고 네트워크에 브로드캐스트할 준비가 된 트랜잭션을 생성합니다.
SystemProgram.transfer 명령이 트래잭션에 추가되었으며 보낼 램포트의 양과 공개 키를 오가는 키가 포함되어 있습니다.

남은 것은 Keypair으로 트랜잭션에 서명하고 네트워크를 통해 전송하는 것입니다.
트랜잭션이 완료된 후 사용자에게 경고하거나 조치를 취하려면 sendAndConfirmTransaction을 사용해 트랜잭션 전송을 완료하고 트랜잭션이 확인될 때까지 기다릴 필요가 없는 경우 sendTransaction을 사용할 수 있습니다. 

const { sendAndConfirmTransaction, clusterApiUrl, Connection } = require("@solana/web3.js");

let keypair = Keypair.generate();
let connection = new Connection(clusterApiUrl('testnet'));

sendAndConfirmTransaction(
	connection,
    tranaction,
    [keypair]
)

위의 코드는 SystemProgram을 사용해 TransactionInstruction을 받아 Transaction을 생성하고 네트워크를 통해 전송합니다. 연결하려는 Solana 네트워크, 즉 mainnet-beta, testnet 또는 devnet을 정의하기 위해 Connection을 사용합니다.

댓글