본문으로 건너뛰기
0%

Solana 개발을 배우는 방법

작성자 Turja

2023년 1월 25일에 게시됨5분 읽기

이 글에서는 Solana 개발이 프로그램과 을 구축하기에 적합한 이유를 설명하고, Solana 개발을 학습하기 위한 로드맵을 소개한 다음, 마지막으로 Solana 개발에 관한 질문에 답합니다. 이 글을 다 읽고 나면 Solana 개발자가 되는 방법을 이해하게 되며, Solana 개발 학습에 도움이 되는 자료도 얻을 수 있습니다.

Solana 개발을 배워야 하는 4가지 이유

Solana는 탈중앙화 애플리케이션을 위해 특별히 설계된 빠르고 확장 가능한 블록체인 플랫폼입니다. 개발자가 앱을 빠르고 효율적으로 구축하고 배포할 수 있게 해주며, 새롭고 혁신적인 프로젝트를 만들기에 이상적인 플랫폼입니다.

더 자세히 알아보고 싶으신가요? dApp 제작에 있어 Solana 개발이 뛰어난 이유를 몇 가지 더 소개합니다.

1. 높은 확장성

Solana는 초당 수만 건의 트랜잭션을 처리할 수 있는 높은 확장성으로 알려져 있습니다. 이 때문에 탈중앙화 거래소나 게임처럼 대량의 트랜잭션을 처리해야 하는 앱을 구축하기에 매력적인 플랫폼입니다.

2. 고급 기능

Solana는 혁신적인 앱을 구축하는 데 활용할 수 있는 여러 고급 기능을 제공합니다. 예를 들어 스마트 컨트랙트 지원, 안전하고 빠른 트랜잭션 처리를 위한 proof of history(PoH), Optimistic Rollup과 같은 레이어 2 솔루션 등이 있습니다.

3. 탄탄한 생태계

개발자, 투자자, 창업가로 이루어진 활발한 생태계가 형성되어 있어, 블록체인 분야에 관심 있는 사람이라면 누구에게나 흥미로운 곳입니다. Solana 개발을 배우면 이 커뮤니티의 일원이 되어 플랫폼의 성장과 발전에 기여할 수 있습니다.

4. 늘어나는 수요

Solana 기반 앱에 대한 수요가 증가함에 따라 Solana 개발 전문성을 갖춘 개발자에 대한 수요도 함께 증가할 것입니다. Solana 개발을 배우면 해당 플랫폼에서 앱을 구축하려는 기업에게 자신을 가치 있는 인재로 자리매김할 수 있습니다.

Solana 개발자가 되는 방법

Solana Developer 로드맵에서 개발자가 학습해야 할 가장 중요한 개념 몇 가지는 다음과 같습니다:

  1. Solana 프로그램
  2. 트랜잭션
  3. Solana 계정 모델
  4. Solana 프로그래밍 언어
  5. Solana 개발 환경 설정
  6. Solana 개발 프레임워크 사용
  7. 프로그램 개발
  8. 프로그램 배포
  9. 프로그램 테스트
  10. 앱 구축

1. Solana 프로그램 배우기

Solana 프로그램은 Solana 블록체인 상의 스마트 컨트랙트로, 실행 가능한 코드를 포함하며 블록체인 내 트랜잭션의 명령을 해석하는 데 사용될 수 있습니다. 이는 Solana 블록체인의 코어에 내장되어 블록체인의 소프트웨어 업데이트의 일부로만 업그레이드할 수 있는 네이티브 프로그램일 수도 있고, 각 프로그램 소유자가 블록체인에 직접 배포하고 업데이트할 수 있는 사용자 작성 프로그램인 온체인 프로그램일 수도 있습니다.

Solana 프로그램은 Sealevel 런타임에서 실행됩니다. 이는 Solana 블록체인의 병렬 처리 모델로, 높은 트랜잭션 속도를 가능하게 합니다. 프로그램은 컴파일된 코드만 포함하고 있어 상태를 갖지 않는(stateless) 것으로 간주되며, 소유자가 업그레이드할 수 있습니다. 또한 다른 계정을 소유할 수 있고 다른 계정을 읽거나 입금할 수 있지만, 자신이 소유한 계정에 대해서만 데이터를 변경하거나 출금할 수 있습니다.

2. Solana 트랜잭션 배우기

Solana에서는 트랜잭션이 클러스터에 제출되어 Solana 런타임에서 처리됩니다. 트랜잭션은 서명들의 컴팩트 배열과 그 뒤를 잇는 메시지로 구성됩니다. 메시지는 헤더, 계정 주소의 컴팩트 배열, 블록해시, 그리고 명령어들의 컴팩트 배열을 포함합니다. 명령어는 단일 프로그램, 해당 프로그램에 전달되어야 할 트랜잭션 계정들의 부분 집합, 그리고 프로그램에 전달되는 데이터 바이트 배열을 지정합니다.

프로그램은 데이터 배열을 해석하고 명령어에 지정된 계정들에 대해 작업을 수행합니다. 프로그램은 성공적으로 반환되거나 오류 코드와 함께 반환될 수 있으며, 후자의 경우 전체 트랜잭션이 실패하게 됩니다. 트랜잭션은 서명 개수와, 각 서명이 메시지의 계정 주소 배열에서 동일한 인덱스에 있는 공개 키에 대응하는 개인 키로 서명되었는지를 검증받습니다.

3. Solana 계정 모델 배우기

Solana의 Sealevel 런타임은 Ethereum의 Virtual Machine(EVM)과 비교했을 때 독특한 계정 모델을 갖고 있습니다. Ethereum에서는 스마트 컨트랙트만 자체 저장소에 상태를 저장할 수 있는 반면, Sealevel에서는 어떤 계정이든 상태를 저장할 수 있습니다. Solana에서는 스마트 컨트랙트의 상태가 다른 계정에 저장되며, 각 계정은 상태 변경에 대한 배타적 제어권을 갖는 소유자 컨트랙트를 지정합니다.

Sealevel에는 두 가지 유형의 계정이 있습니다: 실행 가능 계정과 실행 불가능 계정.

  1. 실행 가능 계정(Executable accounts) - 불변이며 자체 실행 바이트코드나, 변경 가능한 실행 바이트코드를 가진 계정의 프록시 주소를 저장할 수 있습니다
  2. 실행 불가능 계정(Non-executable accounts) - 데이터를 저장하며 소유자에 의해 수정될 수 있지만, 다른 프로그램에 의한 변경은 되돌려집니다

Sealevel에서 실행 가능 계정은 계정을 식별하는 공개 키와, 계정이 호출될 때 실행될 프로그램의 BPF 바이트코드를 저장하며, 실행 불가능 계정은 잔액과 데이터를 저장합니다.

4. Solana 프로그래밍 언어 배우기

Solana 개발에 사용되는 프로그래밍 언어에는 Rust, C, C++가 있습니다. 이러한 언어들은 Solana 블록체인에 배포되어 Solana Runtime을 통해 실행되는 프로그램, 즉 스마트 컨트랙트를 구축하는 데 사용됩니다.

이러한 언어를 이해하고 프로그램을 작성하는 것이 Solana 위에서 개발하기 위한 필수 조건은 아니지만, 개발자는 자신만의 프로그램을 만들기 위해 이를 배우기로 선택할 수 있습니다. Solana는 또한 JSON RPC API와 solana-web3.js를 비롯해 Java, C#, Python, Go, Swift, Dart-Flutter, Kotlin 등 다양한 SDK를 제공하여, 전통적인 웹 또는 모바일 앱과 유사하고 중앙화된 API와 상호작용하는 탈중앙화 애플리케이션을 만들 수 있게 합니다.

5. Solana 개발 환경 설정 방법 배우기

Solana 프로그램을 작성하려면 개발자는 핵심 Solana 개발자 도구를 사용하여 로컬 개발 환경에서 프로그램을 빌드하고 테스트해야 합니다. 예를 들어 커맨드 라인 인터페이스와 Solana 툴 스위트가 있습니다.

이제 막 시작하는 단계라면, 로컬 환경 설정에 대한 단계별 가이드를 따라해 보세요.

6. Solana 개발 프레임워크 배우기

Solana 애플리케이션을 구축하기 위한 두 가지 주요 개발 프레임워크는 Anchor와 Seahorse입니다. Anchor는 Rust로 네이티브하게 애플리케이션을 개발할 때 발생하는 복잡성을 많이 추상화합니다. Seahorse는 Anchor와 유사하지만 Python 개발자를 위한 Solana 개발 프레임워크입니다.

7. Solana 프로그램 개발 방법 배우기

로드맵의 이 시점에서는 Solana의 기본 개념과 애플리케이션 구축에 사용할 다양한 도구에 대한 충분한 개념적 지식을 갖추게 됩니다. 프로그램 작성 방법을 배우려면 입문용 "Hello World" Solana 튜토리얼을 따라하거나, 여러 무료 개발자 자료 중 하나를 참고하세요.

1. Solana Developers

Solana Developers는 Solana 블록체인 플랫폼에 대해 배우고 이를 기반으로 개발하는 데 관심 있는 개발자를 위해 Solana 팀이 제공하는 자료입니다. 이 웹사이트는 문서, 튜토리얼, 커뮤니티 지원 등 풍부한 정보와 자료를 제공하여 개발자가 Solana 개발을 시작하는 데 도움을 줍니다.

2. Solana Docs

Solana Docs는 Solana가 제공하는 자료와 문서의 모음입니다. 여기에는 플랫폼의 기능, 기술적 세부 사항, Solana에서 앱을 구축하고 배포하는 방법에 대한 가이드가 포함되어 있습니다.

3. Solana Cookbook

Solana Cookbook은 Solana 블록체인 상에서 애플리케이션을 구축하기 위한 정보와 예제를 제공하는 개발자 자료입니다. 핵심 개념, 가이드, Solana 개발을 위한 레퍼런스를 다루는 여러 섹션으로 구성되어 있습니다. 신규 개발자의 기여를 받고 있으며, 기여 방법에 대한 가이드라인도 제공합니다.

4. Solana Blockchain Developer Bootcamp

Solana Blockchain Developer Bootcamp는 Solana와 Chainlink가 함께 진행하며, 참가자들이 Solana 아키텍처와 프로그래밍 모델의 세부 사항을 배울 수 있도록 합니다. 여기에는 Rust를 사용해 Solana 블록체인을 빌드, 배포, 테스트하고 상호작용하는 Solana 개발의 기초가 포함됩니다. 개발자는 Solana, Chainlink 등 여러 팀의 지원을 받아 직접 학습하며 Solana 앱을 구축하고 새로운 여정을 시작할 수 있습니다.

8. Solana 프로그램 배포 방법 배우기

코드 작성이 완료되면, 코드를 BPF 바이트코드로 컴파일하여 블록체인에 배포할 수 있는 .so 파일을 생성할 수 있습니다.

프로그램을 배포하려면 solana program deploy 명령어를 사용하면 됩니다. 컴파일된 .so 파일의 경로를 solana program deploy 뒤에 붙여서 실행합니다. 이렇게 하면 블록체인에 트랜잭션이 전송되어 지정된 주소에 프로그램이 배포됩니다. 배포가 성공하면 프로그램 id가 출력됩니다.

9. Solana 프로그램 테스트 방법 배우기

Solana는 프로그램을 디버깅하고 테스트하기 위한 여러 도구를 제공합니다. 여기에는 로컬 런타임 환경을 이용해 프로그램을 대화형으로 테스트하고 디버깅할 수 있게 해주는 crate solana-program-test가 있습니다. crate solana-validator는 로컬 검증자 노드에서 더 강력한 테스트를 가능하게 하며, CLI 도구 solana-test-validator는 Rust나 Javascript/Typescript 애플리케이션에 대해 커맨드 라인에서 트랜잭션을 테스트하고 실행할 수 있게 해줍니다.

테스트 및 디버깅 과정에서 정보를 로깅하기 위해 프로그램 내에서 msg! 매크로를 사용하는 것이 권장되지만, Compute Unit 예산을 초과하지 않도록 프로그램이 안정화되면 이를 제거해야 합니다.

로컬 검증자 노드를 사용해 프로그램을 테스트하는 것도 가능하며, 이를 통해 Solana 네트워크에 배포되었을 때의 프로그램 동작에 더 가깝게 근접한 포괄적인 테스트를 수행할 수 있습니다.

10. Solana 앱 구축 방법 배우기

Solana dapp을 구축하려면 Solana 생태계에 익숙해지고 블록체인과 상호작용하는 방법을 배워야 합니다. Solana 앱 구축을 위해 Solana는 개발자가 JavaScript, Java, Python, Go 등 널리 사용되는 프로그래밍 언어로 앱을 만들 수 있도록 다양한 API와 SDK를 제공합니다. 이러한 SDK는 Solana Developers 페이지에서 확인할 수 있습니다.

Solana 개발 시작하기

이제 Solana 개발을 배우는 단계를 알게 되셨으니, 다음 단계는 Alchemy에서 무료 Solana 개발자 계정에 가입하고 개발을 시작하는 것입니다!

Background gradient

블록체인 매직을 만드세요

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