본문으로 건너뛰기
0%

Seahorse를 사용해 Python으로 Solana 프로그램을 작성하는 방법

2022년 11월 4일에 게시됨4분 읽기

Solana는 스마트 컨트랙트 기능을 갖춘 고성능 블록체인 네트워크로, 글로벌 규모의 채택을 위해 확장 가능하도록 구축되었습니다. Solana는 평균 초당 3,000건의 트랜잭션을 처리하며, 가장 빠른 블록체인 프로토콜 중 하나입니다. Solana Program은 Solana 블록체인 네트워크상에서 작성된 스마트 컨트랙트로, 토큰 전송, NFT 민팅, 온체인 투표 등 모든 활동을 수행하는 데 사용됩니다.

이 글에서는 로컬 개발 환경과 온라인 IDE에서 Seahorse 개발 프레임워크를 사용해 Python으로 Solana Program을 작성하는 방법을 설명합니다.

Solana에서 프로그램을 개발하는 주요 방법은 무엇인가요?

Solana Program을 개발하려면 Rust를 배우고 Anchor 개발 프레임워크로 빌드하거나, Solana를 위한 파이썬 기반 개발 프레임워크인 Seahorse를 사용해야 합니다.

Rust는 Solana가 구축된 프로그래밍 언어이며, Solana의 Sealevel Runtime과 상호작용하는 데 사용할 수 있는 기본 web3 프로그래밍 언어입니다.

anchor로 Solana에서 개발하기

Anchor는 일반 사용자에게 Rust 언어의 복잡성을 추상화하여 Solana 애플리케이션 개발을 더 쉽게 만들어주는 프레임워크입니다.

Anchor는 Solana 개발자에게 Interface Definition Language(IDL), IDL로부터 클라이언트를 생성하는 Typescript 패키지, Rust crate, Command Line Interface(CLI)와 같은 도구를 제공합니다.

Seahorse로 Solana에서 개발하기

Seahorse는 커뮤니티 주도의 Solana 개발 프레임워크로, 개발자가 Python 프로그래밍 언어로 Solana 프로그램을 작성할 수 있게 해줍니다.

Seahorse를 사용하면 Python으로 작성된 모든 프로그램이 Rust 프로그램에 적용되는 것과 동일한 안전 장치를 갖출 수 있습니다. Seahorse는 Anchor와 완전히 호환되며, Rust 코드와도 상호운용됩니다.

Python은 웹 애플리케이션과 머신러닝 프로젝트의 일상적인 프로그래밍에 사용되며, 가장 인기 있는 프로그래밍 언어입니다.

블록체인 기반 애플리케이션 구축에 관심 있는 많은 개발자들이 이미 Python 프로그래밍 기술을 보유하고 있을 수 있으므로, 이들은 새로운 프로그래밍 언어(Rust)를 배우지 않고도 Seahorse를 사용해 Solana 애플리케이션을 구축할 수 있습니다.

로컬 Solana 개발자 환경에서 Seahorse를 사용하는 방법

Solana Playground와 같은 플랫폼은 애플리케이션을 빠르게 빌드하고 테스트하는 용도로만 사용해야 하며, 대규모 을 만드는 데 의존해서는 안 됩니다. 로컬 작업 공간에서 Seahorse로 빌드하는 데 필요한 환경을 설정하기 위해 다음을 설치하겠습니다:

  1. Rust
  2. Solana Tool Suite
  3. Node
  4. Anchor
  5. Seahorse

1. 필수 Solana 개발 도구 설치

Rust, Solana Tool Suite, Node, Anchor를 설치하려면 로컬 Solana 개발자 환경 설정 튜토리얼을 참고하세요.

Linux 기반 머신을 사용 중이라면 추가 종속성을 설치하기 위해 다음 명령어를 실행해야 할 수 있습니다:

2. Seahorse 설치

Seahorse는 제대로 작동하기 위해 _Anchor_와 _Rustfmt_에 의존합니다. 이미 Anchor가 머신에서 작동하고 있으므로, Rustfmt 패키지와 _Anchor_를 설치하는 것은 쉽습니다.

다음 명령어를 실행하여 Rustfmt 패키지를 추가하세요:

터미널에서 다음 명령어를 실행하여 Seahorse를 설치하세요:

Seahorse가 올바르게 설치되었는지 확인하려면 마지막 명령어를 실행하세요:

3. 페이퍼 지갑 생성

이미 Solana Command Line Tools가 설치되어 있으므로, 로컬 환경에서 작업할 때 사용할 로컬 "페이퍼" 지갑을 생성할 수 있습니다.

다음 명령어를 실행하여 Solana CLI 도구가 설치되어 있는지 확인하세요:

그다음 새로운 키페어를 생성하려면 다음 명령어를 입력하세요:

로컬 환경에서 바로 사용할 수 있도록 세부 정보를 안전하게 저장하세요.

페이퍼 지갑에 자금을 충전하려면:

solana airdrop 2 명령어를 실행하여 테스트용 SOL 토큰 2개를 받으세요

Seahorse를 로컬에서 실행하는 대신 온라인 개발 환경에서 테스트하고 싶다면, Solana Playground가 좋은 선택입니다.

Solana Playground에서 Seahorse를 설정하는 방법

Solana Playground는 Solana 애플리케이션 개발을 빠르게 시작할 수 있도록 만들어진 온라인 통합 개발 환경입니다.

Solana Playground는 다음과 같은 사전 구축된 Crate를 제공합니다:

  1. Native(Rust) - 프레임워크 없이 Solana에서 빌드하려는 개발자를 위함
  2. Anchor(Rust) - 추가 도구와 함께 Rust로 Solana에서 빌드하려는 개발자를 위함
  3. Seahorse(Python) - Python 프로그래밍 경험이 있는 Solana 개발자를 위함
개발 프레임워크(Native, Anchor, Seahorse)를 선택하는 Solana Playground 선택 화면
개발 프레임워크(Native, Anchor, Seahorse)를 선택하는 Solana Playground 선택 화면

1. 새로운 Solana playground 프로젝트 생성

디렉토리 이름을 지정하여 Solana Playground에서 새 프로젝트를 생성하세요. 이름을 지정하고 나면 _FizzBuzz_라는 이름의 데모 프로젝트가 나타납니다. 이 미니 dapp이 이 튜토리얼에서 사용할 대상입니다.

2. Playground 지갑 생성

Seahorse 프로그램과 상호작용하려면 먼저 Playground Wallet을 생성해야 합니다. Playground Wallet은 애플리케이션의 테스트 지갑 역할을 합니다.

  • "playground wallet"을 클릭
  • 새 지갑 선택
  • 안내에 따라 JSON 파일 다운로드
새 Playground Wallet을 생성하는 Solana Playground 인터페이스
새 Playground Wallet을 생성하는 Solana Playground 인터페이스

3. 테스트 SOL 토큰 받기

Playground 터미널에서 다음 명령어를 입력하여 devnet SOL 토큰을 받으세요:

$ connect

connect 명령어는 테스트 지갑을 프로젝트와 연결합니다.

$ solana address

solana address 명령어는 Solana 지갑 주소를 출력합니다. 이 주소는 나중에 FizzBuzz 앱을 초기화할 때 사용합니다.

$ solana airdrop 2

solana airdrop 명령어는 "Build" 또는 "Deploy"와 같은 트랜잭션 실행에 필요한 수수료를 충당하기 위해 테스트 SOL 토큰을 지갑에 입금합니다.

Solana Playground의 FizzBuzz Seahorse dapp 프로젝트 파일
Solana Playground의 FizzBuzz Seahorse dapp 프로젝트 파일

Seahorse의 Python 구성 요소 작동 방식

이번 섹션에서는 인기 있지만 간단한 FizzBuzz 앱을 온체인으로 만드는 과정을 살펴보겠습니다. 코드에는 세 가지 주요 섹션이 있습니다:

  1. Account
  2. Instruction 1
  3. Instruction 2

1. Account

Executable Account는 Solana 블록체인에서 실행되는 실행 가능한 코드(스마트 컨트랙트)를 정의하는 데 사용됩니다. Account 정의에서 Solana 프로그램에 필요한 데이터 타입을 지정할 수 있습니다.

FizzBuzz는 Boolean 데이터 타입으로 정의되고, "n" 변수는 부호 없는 정수 타입입니다.

2. Instruction 1

Built-In Account라고 불리는 다른 형태의 계정도 있습니다. 이러한 내장 계정 대부분은 온체인에서 특정 instruction을 호출하는 데 사용됩니다.

A. Signer 계정

signer가 필요한 instruction은 지갑의 승인이 필요합니다. _Signer_는 이 코드 부분에 정의된 instruction 호출과 함께 트랜잭션에 서명하는 지갑입니다.

owner 키워드는 Signer의 세부 정보 값을 담는 데 사용됩니다. Signer의 공개 키를 가져오려면 다음 코드를 추가할 수 있습니다:

B. Empty 계정

Empty account 타입은 처음에는 비어 있더라도 메인 Account(FizzBuzz)의 클래스를 초기화하는 데 사용됩니다.

Empty 키워드를 사용하면 메인 Account에 정의된 클래스를 구성할 수 있습니다. FizzBuzz 계정이 초기화되면 생성 수수료는 Owner(즉, 트랜잭션의 서명자)가 지불합니다.

해당 계정이 온체인에 생성되고 나면, 동일한 owner가 다시 호출해도 재생성할 수 없습니다. 초기화 과정에서 생성된 시드가 원본 계정을 식별할 수 있습니다.

3. Instruction 2

두 번째 instruction 호출은 이미 생성된 계정과 그 값을 사용합니다.

FizzBuzz의 전체 코드 샘플은 다음과 같습니다:

Seahorse로 Python을 사용해 Solana 애플리케이션 빌드 시작하기

Seahorse는 커뮤니티가 주도하는 오픈소스 프로젝트로, 누구나 무료로 사용할 수 있습니다. Seahorse는 현재 베타 버전이며 아직 구현되지 않은 기능이 많습니다. 프로덕션에 사용할 준비는 되어 있지 않지만, Solana의 devnet에서 애플리케이션을 실험하고 개발하는 데 사용할 수 있습니다.

Seahorse를 사용하면 Python으로 Solana에서 빌드하는 것이 가능하고 간단해집니다. Python 개발자로서 web3 개발에 관심이 있다면, Solana Playground에서 Seahorse를 탐구하는 것은 Anchor, Rust, Solana 프로그램을 사용하는 기술을 안전하고 재미있게 익힐 수 있는 방법입니다.

Background gradient

블록체인 매직을 만드세요

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