BTC
ETH
HTX
SOL
BNB
시장 동향 보기
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

솔라나의 프로그래밍 모델을 간략하게 설명해보세요. ETH와의 차이점은 무엇인가요?

Foresight News
特邀专栏作者
2024-05-17 03:00
이 기사는 약 2044자로, 전체를 읽는 데 약 3분이 소요됩니다
이 글에서는 이더리움을 비교 대상으로 사용하여 솔라나 스마트 컨트랙트 프로그래밍 모델의 특징을 간략하게 소개합니다.
AI 요약
펼치기
이 글에서는 이더리움을 비교 대상으로 사용하여 솔라나 스마트 컨트랙트 프로그래밍 모델의 특징을 간략하게 소개합니다.

원저자: Foresight News, Alex Liu

솔라나는 고유한 합의 메커니즘과 아키텍처 설계를 통해 달성되는 속도와 확장성으로 유명한 dApp을 지원하도록 설계된 고성능 블록체인 플랫폼입니다. 이 글에서는 이더리움을 비교 대상으로 사용하여 솔라나 스마트 컨트랙트 프로그래밍 모델의 특징을 간략하게 소개합니다.

스마트 계약, 온체인 프로그램:

이더리움에서 실행되는 프로그램을 스마트 계약이라고 부르는데, 이는 이더리움의 특정 주소에 위치한 일련의 코드(함수)와 데이터(상태)입니다. (아, 코드와 데이터가 결합되어 있습니다.) 스마트 컨트랙트는 컨트랙트 계정이라고 불리는 이더리움 계정이기도 합니다. 잔액이 있고 거래 개체가 될 수 있지만 인간이 제어할 수 없으며 네트워크에 배포되어 프로그램으로 실행됩니다.

솔라나에서 실행되는 실행 코드는 온체인 프로그램이라고 불리며, 각 거래에서 전송된 명령을 해석할 수 있습니다. 이러한 프로그램은 기본 프로그램으로 네트워크 코어에 직접 배포하거나 누구나 SPL 프로그램으로 게시할 수 있습니다.


  • 지침: 지침은 솔라나 체인의 프로그램에 대한 고유한 용어입니다. 온체인 프로그램은 특정 작업을 수행하는 가장 작은 단위인 명령어로 구성됩니다. 각 솔라나 거래에는 하나 이상의 명령어가 포함되어 있습니다. 지침은 특정 온체인 프로그램 호출, 계정 전달, 입력 목록 전달, 바이트 배열 제공 등 수행할 작업을 지정합니다. 명령어에는 계산상의 제약이 있으므로 온체인 프로그램은 소수의 계산 단위를 사용하거나 값비싼 작업을 여러 명령어로 분할하도록 최적화되어야 합니다.



  • 네이티브 프로그램: 검증 노드에 필요한 기능을 제공하는 네이티브 프로그램입니다. 이들 중 가장 유명한 것은 새 계정 생성과 두 계정 간의 SOL 전송을 관리하는 시스템 프로그램입니다.

  • SPL 프로그램: 토큰 생성, 교환, 대출은 물론 서약 풀 생성, 온체인 도메인 이름 확인 서비스 유지 관리 등 일련의 온체인 활동을 정의합니다. 그 중 SPL 토큰 프로그램은 토큰 운영에 사용되는 반면 Associated Token Account 프로그램은 기타 맞춤형 프로그램을 작성하는 데 자주 사용됩니다.


당신은 그것을 스마트 계약이라고 부르고, 나는 그것을 온체인 프로그램이라고 부릅니다. 사람마다 의견이 다르지만 모두 블록체인에서 실행되는 코드를 참조합니다. Zhang, San, Li, Si 및 Wang Mazi는 모두 개인 이름이므로 다른 측면에서 품질을 검토해야 합니다.

계정 모델, 데이터 분리:

이더리움과 마찬가지로 솔라나도 계정 모델을 기반으로 하는 블록체인이지만, 솔라나는 이더리움과 다른 계정 모델을 제공하고 데이터를 다른 방식으로 저장합니다.

솔라나에서 계정은 지갑 정보 및 기타 데이터를 저장할 수 있습니다. 계정 정의 필드에는 Lamports(계정 잔액), Owner(계정 소유자), Executable(실행 가능한 계정인지 여부), Data(계정에 저장된 데이터)가 포함됩니다. 각 계정은 해당 계정이 상태 저장소로 사용되는 프로그램을 구별하기 위해 프로그램을 소유자로 지정합니다. 이러한 온체인 프로그램은 읽기 전용이거나 상태 비저장입니다. 프로그램 계정(실행 가능 계정)은 BPF 바이트코드만 저장하고 어떤 상태도 저장하지 않습니다. 프로그램은 다른 독립 계정(비실행 가능 계정), 즉 Solana의 프로그래밍에 상태를 저장합니다. 모델은 코드와 데이터를 분리합니다.

Ethereum 계정은 주로 EVM 상태에 대한 참조입니다. 스마트 계약에는 코드 논리가 포함될 뿐만 아니라 사용자 데이터도 저장해야 합니다. 이는 종종 EVM의 역사에서 남겨진 설계 결함으로 간주됩니다.

이 차이를 과소평가하지 마세요! Solana 스마트 계약은 결합된 프로그래밍 모델(예: 이더리움)을 갖춘 블록체인보다 근본적으로 공격하기가 더 어렵습니다.

이더리움에서 스마트 계약의 "소유자"는 스마트 계약에 일대일로 대응하는 전역 변수입니다. 따라서 함수를 호출하면 계약의 "소유자"가 직접 변경될 수 있습니다.

솔라나에서 스마트 계약의 "소유자"는 전역 변수가 아닌 계정과 관련된 데이터입니다. 계정은 일대일로 연결되지 않고 여러 명의 소유자를 가질 수 있습니다. 스마트 계약의 보안 취약점을 악용하려면 공격자는 문제가 있는 함수를 찾아야 할 뿐만 아니라 해당 함수를 호출할 "올바른" 계정을 준비해야 합니다. Solana 스마트 컨트랙트는 일반적으로 여러 입력 계정을 포함하고 제약 조건(예: `account 1.owner==account 2.key`)을 통해 이들 간의 관계를 관리하기 때문에 이 단계는 쉽지 않습니다. "올바른 계정 준비"부터 "공격 실행"까지의 과정은 보안 모니터링 담당자가 공격 전에 스마트 계약과 관련된 "가짜" 계정을 생성하는 의심스러운 거래를 사전에 탐지하기에 충분합니다.

이더리움의 스마트 계약은 고유한 비밀번호가 있는 금고와 같으며, 솔라나는 많은 비밀번호가 있는 금고와 같습니다. 비밀번호를 얻는 방법도 있지만 자물쇠를 열기 위해서는 비밀번호에 해당하는 숫자를 알아내야 합니다.

프로그래밍 언어

Rust는 솔라나에서 스마트 계약을 개발하기 위한 주요 프로그래밍 언어입니다. 성능과 보안 기능으로 인해 블록체인 및 스마트 계약의 위험도가 높은 환경에 적합합니다. Solana는 C, C++ 및 (매우 특이한) 다른 언어도 지원합니다. 공식은 온체인 프로그램 개발을 지원하기 위해 Rust 및 C SDK를 제공합니다. 개발자는 도구를 사용하여 프로그램을 BPF(Berkley Packet Filter) 바이트 코드(파일 확장자는 .so임)로 컴파일한 다음 이를 Solana 체인에 배포하고 Sealevel 병렬 스마트 계약 런타임을 통해 스마트 계약 논리를 실행할 수 있습니다.

Rust 언어 자체는 시작하기 어렵고 블록체인 개발에 맞게 맞춤화되지 않았기 때문에 많은 요구 사항에 따라 반복적인 재발명과 코드 중복이 필요합니다. (생산 중인 많은 프로젝트는 개발을 단순화하기 위해 Backpack과 Armani가 만든 Anchor 프레임워크를 사용합니다.) Cairo(Starknet), Move(Sui, Aptos) 등 블록체인 개발 전용으로 새로 만들어진 프로그래밍 언어 중 상당수는 Rust를 기반으로 합니다.

프로덕션 중인 많은 프로젝트에서 Anchor 프레임워크를 사용합니다.

이더리움 스마트 계약은 주로 Solidity 언어로 개발됩니다(구문은 javascript와 유사하며 코드 파일의 확장자는 .sol입니다). 상대적으로 단순한 구문과 보다 성숙한 개발 도구(Hardhat 프레임워크, Remix IDE...)로 인해 우리는 일반적으로 Ethereum의 개발 경험이 더 간단하고 신선하다고 생각하는 반면 Solana 개발은 시작하기가 더 어렵다고 생각합니다. 따라서 현재 솔라나가 매우 인기가 있음에도 불구하고 실제로 이더리움의 개발자 수는 여전히 솔라나보다 훨씬 많습니다.

특정 도로 조건에서는 최고의 경주용 자동차가 개조된 자동차만큼 빠르지 않습니다. Rust는 솔라나의 성능과 안전성을 효과적으로 보장하는 최고 수준의 경주용 자동차와 같습니다. 그러나 이 트랙을 온체인 프로그램용으로 개발하도록 설계된 것이 아니라 오히려 운전(개발)의 난이도를 높이는 원인이 됩니다. Rust를 기반으로 한 퍼블릭 체인을 사용하고 체인에 대한 사용자 정의 언어를 개발하는 것은 경주용 자동차를 도로 조건에 더 적합하도록 수정하는 것과 같습니다. 솔라나는 여기서 불리한 위치에 있습니다.

요약하다

솔라나의 스마트 계약 프로그래밍 모델은 혁신적입니다. Rust를 주요 프로그래밍 언어로 사용하는 무상태 스마트 계약 개발 방법과 상태와 논리를 분리하는 아키텍처를 제공하여 개발자가 스마트 계약을 구축 및 배포할 수 있는 강력한 환경을 제공하고 보안과 성능을 보장하지만 개발이 더 어려워집니다. 높은 처리량, 저렴한 비용 및 확장성에 초점을 맞춘 Solana는 고성능 dApp을 만들려는 개발자를 위한 현재의 선택으로 남아 있습니다.

참고 링크

https://solana.com/docs

https://ethereum.org/en/developers/docs

https://www.anchor-lang.com/


Solana
ETH
Odaily 공식 커뮤니티에 가입하세요