첫 번째 Solana 프로그램 배포하기

Anchor 프레임워크를 사용하여 첫 번째 프로그램을 Solana 블록체인에 빌드, 배포 및 테스트해 보세요. 이 가이드는 Solana Playground에 더 익숙해지고 Program Derived Address(PDA) 및 Cross Program Invocation(CPI)을 사용할 준비를 하는 데 도움이 됩니다.

Anchor 프로젝트 생성하기

  1. 웹 브라우저에서 Solana Playground를 엽니다
  2. 왼쪽 패널에서 + Create a new project를 클릭합니다
  3. Project name을 입력합니다
  4. 프레임워크로 **Anchor (Rust)**를 선택합니다
  5. Create를 클릭합니다

새 프로젝트새 프로젝트

src/lib.rs 소스 파일이 열립니다. 이 파일에는 다음 작업을 수행하는 Initialize라는 구조체가 포함되어 있습니다:

  • data: u64 라는 필수 매개변수를 받습니다
  • 새 계정을 생성합니다
  • data: u64 값을 새 계정에 저장합니다
  • 트랜잭션의 프로그램 로그에 메시지를 추가합니다
lib.rs
use anchor_lang::prelude::*;
// This is your program's public key and it will update
// automatically when you build the project.
declare_id!("11111111111111111111111111111111");
#[program]
mod hello_anchor {
use super::*;
pub fn initialize(ctx: Context<Initialize>, data: u64) -> Result<()> {
ctx.accounts.new_account.data = data;
msg!("Changed data to: {}!", data); // Message will show up in the tx logs
Ok(())
}
}
#[derive(Accounts)]
pub struct Initialize<'info> {
// We must specify the space in order to initialize an account.
// First 8 bytes are default account discriminator,
// next 8 bytes come from NewAccount.data being type u64.
// (u64 = 64 bits unsigned integer = 8 bytes)
#[account(
init,
payer = signer,
space = 8 + 8
)]
pub new_account: Account<'info, NewAccount>,
#[account(mut)]
pub signer: Signer<'info>,
pub system_program: Program<'info, System>,
}
#[account]
pub struct NewAccount {
data: u64
}

프로그램 빌드 및 배포하기

  1. 프로그램 코드 컴파일하기
Terminal
$
build

declare_id!() 에 정의된 프로그램 ID가 이제 업데이트됩니다.

  1. 지갑에 SOL 추가하기 (선택 사항)

프로그램을 배포하려면 program account에 SOL이 필요합니다. 필요한 경우 3단계로 진행하기 전에 지갑에 SOL을 추가하세요.

  1. 네트워크에 프로그램 배포하기
Terminal
$
deploy

배포되면 프로그램의 바이트코드는 실행 가능한 program account에 저장됩니다.

참고: 원하는 경우, 아래 스크린샷과 같이 왼쪽 패널의 BuildDeploy 버튼을 사용할 수 있습니다.

빌드 및 배포빌드 및 배포

프로그램 테스트하기

  1. tests/anchor.test.ts라는 테스트 파일을 엽니다. 이 파일은 클라이언트에서 프로그램의 initialize 구조체를 호출하는 방법을 보여줍니다.
anchor.test.ts
// No imports needed: web3, anchor, pg and more are globally available
describe("Test", () => {
it("initialize", async () => {
// Generate keypair for the new account
const newAccountKp = new web3.Keypair();
// Send transaction
const data = new BN(42);
const txHash = await pg.program.methods
.initialize(data)
.accounts({
newAccount: newAccountKp.publicKey,
signer: pg.wallet.publicKey,
systemProgram: web3.SystemProgram.programId
})
.signers([newAccountKp])
.rpc();
console.log(`Use 'solana confirm -v ${txHash}' to see the logs`);
// Confirm transaction
await pg.connection.confirmTransaction(txHash);
// Fetch the created account
const newAccount = await pg.program.account.newAccount.fetch(
newAccountKp.publicKey
);
console.log("Onchain data is:", newAccount.data.toString());
// Check whether the data onchain is equal to local 'data'
assert(data.eq(newAccount.data));
});
});
  1. 테스트 파일 실행하기
Terminal
$
test
  1. 출력에 포함된 트랜잭션 해시(TxHash)를 저장합니다

(위 예시에서 트랜잭션 해시는 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc입니다.)

참고: 원하시면 왼쪽 패널의 Test 버튼을 사용할 수 있습니다.

테스트 실행테스트 실행

  1. solana confirm -v [TxHash]를 실행하여 트랜잭션 로그를 확인합니다
Terminal
$
solana confirm -v 3TewJtiUz1EgtT88pLJHvKFzqrzDNuHVi8CfD2mWmHEBAaMfC5NAaHdmr19qQYfTiBace6XUmADvR4Qrhe8gH5uc
  1. 트랜잭션 세부 정보 보기

SolanaFM 또는 Solana Explorer를 열고 트랜잭션 해시를 검색하세요.

Solana Explorer: Solana Playground와 일치하도록 네트워크 클러스터를 devnet로 설정하세요.

프로그램 종료하기

온체인 프로그램에 할당된 SOL을 회수하려면 프로그램을 닫으세요. 이를 위해 declare_id!() 매크로에 저장된 프로그램 주소를 사용하여 solana program close [ProgramID]를 실행하세요.

Terminal
$
solana program close 2VvQ11q8xrn5tkPNyeraRsPaATdiPx8weLAD8aD4dn2r

프로그램은 업그레이드 권한이 있는 계정에 의해서만 종료되거나 업데이트될 수 있습니다. 프로그램이 배포될 때 Playground 지갑이 자동으로 각 프로그램의 업그레이드 권한을 갖게 됩니다. 업그레이드 권한이 취소되면 프로그램은 변경 불가능하게 됩니다.

축하합니다! Anchor를 사용하여 첫 번째 Solana 프로그램을 빌드하고 배포했습니다.

다음 단계

이제 첫 번째 프로그램을 배포했으니, 프로그램 파생 주소크로스 프로그램 호출을 탐색할 준비가 되었습니다.

Is this page helpful?

목차

페이지 편집

관리자

© 2026 솔라나 재단.
모든 권리 보유.
연결하기