본문으로 건너뛰기
0%

Anchor와 Anchor Program Registry란?

작성자 Pari

2023년 1월 26일에 게시됨4분 읽기

Anchor는 Solana에서 안전하고 효율적인 고수준 프로그램을 작성하기 위한 대표적인 Solana 개발 프레임워크입니다. Anchor의 프로그램은 Solana 블록체인 상의 스마트 컨트랙트로, 사용자가 데이터를 Solana 블록체인에 anchor(고정)할 수 있게 해줍니다. Solana의 방대한 개발자 커뮤니티 덕분에, Solana에서 검증된 프로그램들은 손쉬운 접근을 위해 Anchor Program Registry에 등록되어 있습니다.

이 글에서는 가장 중요한 Solana 개발자 도구 중 하나인 Anchor와, Solana 위에 구축할 때 사용하는 Anchor Program Registry의 사용법을 다룹니다. 또한 Anchor와, Solana와 상호작용하기 위한 Python 기반 개발 프레임워크인 Seahorse를 비교합니다.

Solana 계정 모델이란?

개발자가 Solana 블록체인에서 구축하는 모든 것은 프로그램과 계정을 포함하며, 이들이 블록체인에서 실행되고 데이터를 저장합니다. Solana에는 다음과 같은 여러 계정 카테고리가 있습니다:

  • 데이터 계정(Data accounts) - 데이터를 저장
  • 프로그램 계정(Program accounts) - 실행 가능한 프로그램을 저장
  • 네이티브 계정(Native accounts) - Solana의 네이티브 프로그램을 나타냄

그리고 모든 계정은 다음과 같은 정보를 저장합니다:

  • lamports - 계정이 보유한 lamport의 수
  • owner - 계정을 소유한 프로그램
  • executable - 계정이 명령어를 처리할 수 있는지 여부를 확인
  • data - 계정이 저장하는 원시 데이터 바이트 배열
  • rent_epoch - 계정이 rent 수수료를 지불해야 할 다음 epoch

Anchor란 무엇인가?

Anchor는 Solana에서 안전하고 고수준의 프로그램을 작성하기 위한 프레임워크로, 계정의 저수준 구성과 Solana 프로그램 인터페이스 수정 작업을 추상화합니다.

프레임워크는 기반 역할을 하여 사용자가 불필요한 로직을 처음부터 만들 필요가 없게 해주고, 중복 코드를 피하며, 깔끔하고 안전한 프로그램을 작성하도록 돕습니다. 구체적으로 Anchor는 보일러플레이트를 통해 역직렬화된 계정 및 명령어 데이터, 커맨드 라인 인터페이스(CLI), 그리고 Solana 앱 개발을 위한 워크스페이스를 제공합니다.

Anchor는 어떻게 동작하는가?

Anchor는 매크로와 trait를 사용해 개발자를 위한 보일러플레이트 Rust 코드를 생성합니다. 모든 Anchor 프로그램은 세 가지 구성 요소로 이루어집니다:

  1. declare_id - 프로그램의 온체인 주소를 선언하는 데 사용되는 매크로
  2. #[program] - 프로그램의 명령어 로직을 포함하는 모듈을 나타내는 데 사용되는 속성 매크로
  3. #[account] - 프로그램의 커스텀 계정 타입을 정의하는 데 사용되는 속성 매크로

Anchor 프로그램의 기본 구조는 다음과 같습니다:

Anchor 프로그램의 기본 구조
Anchor 프로그램의 기본 구조

1. 기본 키페어 생성

Anchor 프로그램을 처음 빌드할 때, 프로그램을 배포하기 위한 기본 키페어로 사용될 새 키페어가 생성됩니다.

이 public key는 declare_id! 매크로에 지정하는 programID로 사용해야 합니다.

2. 프로그램에 명령어 지정

그런 다음 #[program] 속성을 사용해 프로그램에 명령어를 개별적으로 지정할 수 있습니다. 각 명령어 함수는 Context 타입의 파라미터를 필요로 하며, 명령어 데이터를 나타내는 추가 함수 파라미터를 선택적으로 포함할 수 있습니다. Anchor는 명령어 데이터의 역직렬화를 자동으로 처리하므로, 사용자는 명령어 데이터를 Rust 타입으로 다룰 수 있습니다.

3. 계정 역직렬화기 구현

_#[derive(Accounts)]_는 주어진 struct에 대해 계정 역직렬화기(Account deserializer)를 구현하여, 각 계정을 수동으로 역직렬화할 필요를 없애줍니다. 이는 필요한 모든 제약 조건 검사를 수행하고, 프로그램이 안전하게 실행되기 위해 계정이 요구되는 조건을 충족하는지 확인하는 역할을 합니다.

4. initialize 함수 호출

Initialize 함수가 호출되면 프로그램은 다음을 수행합니다:

  • 명령어에 전달된 계정이 Initialize struct에 지정된 계정 타입과 일치하는지 확인
  • 계정이 지정된 추가 제약 조건을 충족하는지 확인

이것이 Anchor 프로그램이 동작하는 방식이며, 이를 통해 Anchor 프로그램 빌드를 시작할 수 있습니다. Anchor 프로그램에 대해 더 알아보려면 공식 문서를 확인하는 것을 권장합니다.

Anchor Program Registry(APR)란?

Anchor Program Registry(APR)는 Solana 블록체인에 등록된 Anchor 프로그램들의 디렉터리로, 사용자가 이를 쉽게 찾고 접근할 수 있게 해줍니다. APR은 Anchor 프로그램이 블록체인 상에 등록되고 인증되도록 보장합니다.

작업을 더 쉽게 만들어주는 여러 프로그램이 Anchor Program Registry에 등록되어 있습니다. 몇 가지 예를 살펴보겠습니다:

  • token_signer - Solana 키 관리 및 보안을 위한 프로그램 모음을 제공합니다.
  • spl_governance - Sealevel 병렬 런타임을 대상으로 하는 온체인 프로그램 모음입니다.
  • crate_token - 누구나 토큰화된 자산 바스켓을 생성, 관리, 거래할 수 있게 해줍니다.

Solana 개발자는 Anchor Program Registry를 어떻게 사용하는가?

Solana 개발자는 Solana 블록체인 상의 검증된 프로그램에 접근하기 위해 Anchor Program Registry를 사용합니다. Anchor Program Registry는 검증된 프로그램의 소스 코드를 카탈로그화하여, 개발자가 동작하는 코드 저장소에 접근할 수 있게 해줍니다.

Anchor Program Registry를 사용하려면 아래 흐름을 따르면 됩니다:

  1. Anchor Program의 주소를 방문
  2. 지갑 연결
  3. UI 접근
  4. 명령어를 실행하기 위한 트랜잭션에 서명하고 전송

APR 인터페이스는 Anchor 프로그램이 지원하는 명령어 목록과, 주어진 명령어의 입력값을 구성할 수 있는 폼 필드를 제공합니다.

Seahorse란 무엇인가?

Seahorse는 Anchor와 마찬가지로 Solana 개발 프레임워크지만, Python 개발자를 위해 만들어졌습니다. Seahorse는 Solana 블록체인 상의 프로그램 및 계정을 빌드, 배포, 상호작용하기 위한 도구 모음을 제공합니다. JavaScript, Rust, Python 등 다양한 프로그래밍 언어를 지원하며, 신규 개발자를 위한 리소스와 문서도 함께 제공합니다.

Anchor vs. Seahorse

Feature
Seahorse
Anchor

지원하는 프로그래밍 언어

JavaScript, Rust, Python

JavaScript, TypeScript

초점

유연성과 확장성

사용자 경험과 사용 편의성

도구 및 기능

스마트 컨트랙트 개발

탈중앙화 애플리케이션 개발

로컬 개발 환경

시뮬레이션 실행용 Testnet

문서 및 리소스

Anchor를 배우기 위한 리소스

Anchor 프레임워크를 배우는 데 도움이 되는 여러 리소스가 있습니다:

  1. Anchor Docs - 가장 관련성 높고 최신인 정보를 확인할 수 있습니다
  2. Soldev - 예제 코드와 함께 Anchor로 스마트 컨트랙트 개발을 시작할 수 있습니다
  3. Sol Playground - 온라인 IDE를 사용해 Anchor로 프로그램 개발을 시작할 수 있습니다

Anchor 프레임워크를 배우고 자신만의 탈중앙화 애플리케이션 구축을 시작하는 데 도움이 되는 리소스는 이 외에도 다양하게 존재합니다.

Anchor와 Alchemy로 개발 시작하기

Anchor 프레임워크는 **신뢰할 수 있고 안전한 Solana 프로그램(스마트 컨트랙트)**을 구축하는 데 유용한 도구입니다. 또한 Anchor Program Registry는 Solana 블록체인 상의 검증된 프로그램을 위한 디렉터리로, 더 나은 조합성(composability)을 가능하게 하는 중요한 리소스입니다.

Anchor 프레임워크의 유연성과 확장성은 Solana 개발자에게 매력적인 선택지가 됩니다. Solana 개발 여정을 시작할 준비가 되었다면, 지금 무료 Solana RPC 계정에 가입하세요!

Background gradient

블록체인 매직을 만드세요

Alchemy는 가장 강력한 Web3 개발자 제품 및 도구를 리소스, 커뮤니티, 그리고 전설적인 지원과 결합합니다.