UStackUStack
Better Sol icon

Better Sol

Better Sol은 TypeScript로 Solana 프로그램을 작성하는 도구입니다. 단일 파일에 프로그램과 타입 클라이언트가 함께 정의돼 Rust 없이 가능

Better Sol

Better Sol이란?

Better Sol은 Rust 대신 TypeScript를 사용해 Solana 프로그램을 작성하는 도구입니다. 단일 프로그램 소스 패턴을 중심으로 설계되어 하나의 파일에서 온체인 프로그램과 이를 상호작용하는 타입 클라이언트를 정의합니다.

핵심 목적은 프로그램 로직과 해당 클라이언트 타입을 함께 유지해 Solana 개발 워크플로를 간소화하는 것입니다. Rust로 전환하지 않고 Solana 기능을 빌드하고 사용할 수 있습니다.

주요 기능

  • TypeScript 우선 Solana 프로그램 작성: Rust 대신 TypeScript로 프로그램을 작성합니다.
  • 단일 파일 프로그램 + 타입 클라이언트: 하나의 파일에 Solana 프로그램과 타입 클라이언트를 정의합니다.
  • 타입 클라이언트 생성: 클라이언트 인터페이스가 프로그램 정의와 연결되어 상호작용이 타입 인식됩니다.
  • 언어 경계 축소: 온체인 코드와 클라이언트 API를 동일한 TypeScript 코드베이스에 유지합니다.

Better Sol 사용 방법

  • Solana 프로그램 정의와 타입 클라이언트를 모두 포함하는 단일 Better Sol 파일을 생성합니다.
  • 동일한 파일에서 프로그램 로직을 구현합니다.
  • 동일 코드에서 타입 클라이언트를 사용해 트랜잭션을 빌드하고 프로그램과 상호작용합니다.
  • 사이트에 제공된 프로젝트 문서화 워크플로를 따라 Solana 프로그램을 빌드하고 배포합니다.

사용 사례

  • TypeScript로 Solana 스마트 컨트랙트 빌드: 프론트엔드와 백엔드 로직에 TypeScript를 선호하는 팀이 Solana 개발을 동일 언어로 유지할 수 있습니다.
  • 프로그램 상호작용을 위한 강타입 클라이언트 생성: 개발자가 타입 클라이언트 인터페이스를 사용해 지시 호출 시 수동 연결을 줄일 수 있습니다.
  • 새로운 온체인 기능 프로토타이핑: 프로그램과 클라이언트를 한 곳에 두어 지시 형태와 데이터 타입을 더 빠르게 반복합니다.
  • TypeScript 모노레포 내 프로그램 API 공유: 클라이언트 코드가 다른 TypeScript 서비스와 함께 있을 때 통합 파일이 프로그램과 소비자 코드 간 경계를 단순화합니다.
  • Solana 개발자 교육 또는 온보딩: Rust를 피하고 싶은 개발자가 TypeScript로 프로그램 정의와 클라이언트 사용을 할 수 있습니다.

자주 묻는 질문

Better Sol은 Rust 프로그램 작성을 요구하나요?
아니요. 제품 포지셔닝에 따라 TypeScript로 Solana 프로그램을 작성할 수 있으며 Rust가 필요 없습니다.

프로그램과 클라이언트는 별도로 정의하나요, 아니면 함께하나요?
Better Sol은 단일 파일로 프로그램과 타입 클라이언트를 정의하는 것으로 설명됩니다.

타입 클라이언트는 어떤 언어 기반인가요?
타입 클라이언트는 프로그램이 TypeScript로 작성되는 맥락에서 TypeScript 개발로 설명됩니다.

기존 프로그램과의 클라이언트 전용 통합에 Better Sol을 사용할 수 있나요?
제공된 사이트 콘텐츠는 하나의 파일에 프로그램과 타입 클라이언트를 정의하는 데 초점을 맞춥니다. 이미 배포된 외부 정의 프로그램에 대한 클라이언트 전용 사용을 명시적으로 확인하지 않습니다.

대안

  • Rust 기반 Solana 개발 프레임워크: Rust에 익숙하다면 많은 Solana 툴체인에서 네이티브 지원되는 언어로 프로그램을 작성할 수 있지만, 온체인 Rust와 오프체인 클라이언트 코드 간 경계가 더 명확합니다.
  • Solana용 TypeScript 기반 클라이언트 라이브러리: 주요 목표가 타입 또는 구조화된 클라이언트 상호작용이라면 프로그램 자체가 Rust로 작성되어도 별도 클라이언트 도구가 도움이 됩니다.
  • 일반 블록체인 SDK 접근: 표준 라이브러리로 Solana 지시 레이아웃과 트랜잭션 흐름을 빌드할 수 있지만, 클라이언트 타입을 프로그램 로직과 맞추는 데 더 많은 수동 작업이 필요합니다.
  • 다른 “프로그램 정의 + 생성 클라이언트” 도구 패턴: 일부 도구는 프로그램 사양에서 클라이언트 코드를 생성합니다. 이러한 도구는 지시 스키마를 클라이언트 타입에 연결하는 방식과 Rust 우선 또는 TypeScript 우선 여부에서 다를 수 있습니다.