Vyper, Solidity 및 Scrypto: 스마트 계약 언어를 비교하는 방법

블록체인 네트워크를 위한 세 가지 다른 프로그래밍 언어와 비교 방법을 살펴보세요.

이더리움 네트워크는 스마트 계약을 블록체인 공간으로 가져와 다음과 같은 개념을 만들었습니다. 분산 금융 (DeFi) 수. 

스마트 계약은 특정 조건이 충족되면 자동으로 프로세스를 실행할 수 있습니다. 이 새로운 기술과 함께 Solidity라는 새로운 코딩 언어가 개발되었습니다.

블록체인 산업이 계속 성장하고 새로운 블록체인 네트워크가 등장함에 따라 Vyper 및 Scrypto와 같은 추가 프로그래밍 언어가 이 공간에 도입되고 있습니다.

프로그래밍 언어 텍스트와 숫자의 문자열을 기계가 읽을 수 있는 코드로 변환하는 일련의 규칙입니다. 간단히 말해서 프로그래밍 언어는 컴퓨터가 인간이 입력한 명령을 이해할 수 있도록 합니다. 블록체인 산업과 관련하여 Solidity, Python 및 Javascript는 가장 일반적으로 사용되는 언어이지만 모두 다르게 작동합니다.

솔리 디티 란?

Solidity는 이더리움 블록체인과 BNB Smart Chain 및 Avalanche와 같은 기타 블록체인 네트워크에서 스마트 계약을 구축하기 위한 객체 지향 및 고급 프로그래밍 언어입니다. 이 언어는 2014년에 개발되었으며 JavaScript, C++ 및 Python과 같은 프로그래밍 언어와 유사점을 공유합니다.

Solidity는 고급 언어이기 때문에 컴퓨터 코드는 XNUMX과 XNUMX 대신 이해하기 쉽고 사람이 읽을 수 있는 방식으로 입력됩니다. 예를 들어, Solidity 코드에는 "기능" 및 "계약"과 같은 단어와 구문, 중괄호 및 숫자가 포함됩니다.

객체 지향 코딩 언어라는 것은 Solidity가 매번 원본 코드를 다시 작성하지 않고도 유사한 코드 조각을 생성하기 위해 재사용할 수 있는 코드 조각인 "객체"를 사용하는 것을 의미합니다.

Solidity는 또한 컴파일러를 사용하여 사람이 읽을 수 있는 고급 코드를 이더리움 가상 머신(EVM)에서 실행되는 기계가 읽을 수 있는 코드로 변환합니다.

바이퍼란?

Vyper는 EVM과 함께 사용하도록 설계된 스마트 계약을 위한 계약 지향 파이썬 프로그래밍 언어입니다. 이 언어는 코드의 보안과 가독성을 개선하여 Solidity를 개선하도록 설계되었습니다. Vyper는 코드의 가청성에 중점을 둡니다. 이 때문에 인간이 가능한 한 많은 바이퍼 코드를 읽을 수 있어야 한다는 것이 그 원칙 중 하나입니다. 

Vyper는 또한 누구나 오해의 소지가 있는 코드를 작성하기 어렵게 만드는 것을 목표로 합니다. 독자(예: 감사자)의 단순성은 작성자(예: 개발자)의 단순성보다 더 중요합니다. 이렇게 하면 스마트 계약 또는 분산 애플리케이션(DApp) 내에서 악성 코드를 더 쉽게 식별할 수 있습니다.

스크립토란?

Scrypto는 자산 지향 스마트 계약 언어입니다. 이 언어는 Radix에 의해 개발되었으며 Rust를 기반으로 하며 Radix Engine v2에 대한 특정 기능과 구문을 추가하면서 대부분의 Rust 기능을 유지합니다. Scrypto는 자산 지향적이므로 언어 ​​내 리소스 유형인 토큰과 같은 자산과 상호 작용할 수 있습니다. 

Solidity와 같은 코딩 언어에서 ERC-20 토큰은 EVM에 스마트 계약으로 존재합니다. Scrypto 내의 자산은 컨테이너 및 볼트 내에 존재하는 리소스입니다. 간단히 말해서 양동이(컨테이너)를 가지고 돼지 저금통(금고)에 저장할 수 있는 동전(자산)으로 채우는 것과 같습니다.

최근 : 산업이 성숙함에 따라 시장에 덜 의존하는 암호화폐 인재에 대한 수요

Scrypto는 또한 DApp 내에서 기능을 활성화하기 위해 컨테이너 및 리소스와 상호 작용하면서 필요한 코드만 작성할 수 있도록 함으로써 개발자 친화적인 데 중점을 둡니다. 보안은 개발자가 포괄적 권한을 부여하는 대신 DApp에 특정 지침을 제공할 수 있는 또 다른 원칙입니다.

스마트 계약 언어 비교 방법

Solidity는 Ethereum과 같은 주요 블록체인 네트워크에서 사용되기 때문에 광범위한 온라인 학습 리소스와 많은 커뮤니티 지원을 제공합니다. Solidity는 또한 객체 지향 프로그래밍(OOP)에서 가져온 다양한 기능을 가지고 있어 문제가 있을 때 모듈화되고 문제를 쉽게 해결할 수 있습니다. 예를 들어, 특정 클래스의 개체가 오작동하는 경우 클래스의 원점으로 역추적할 수 있습니다. 

이것은 Solidity가 캡슐화를 사용하기 때문에 작동합니다. 즉, 모든 객체는 독립적이며 각 기능은 독립적으로 작동합니다. 코딩 언어의 모듈성은 또한 개발자가 여러 개체에 대해 동시에 작업할 수 있도록 하여 스마트 계약을 보다 효율적으로 구축, 수정 및 배포할 수 있도록 합니다.

Vyper는 Solidity보다 간단한 코딩 언어로 투명성, 언어 구조의 단순성 및 가청성을 강조합니다. Vyper는 또한 보안상의 이유로 의도적으로 수행된 Solidity보다 기능이 적습니다. 제한된 기능 세트는 악의적인 행위자가 악용할 수 있는 취약점의 수를 줄입니다.

예를 들어, Solidity는 프로세스가 실행되기 전후에 검사가 수행되었음을 나타내는 수정자를 사용합니다. 그러나 개발자가 오해의 소지가 있는 코드를 더 쉽게 작성할 수 있다고 생각하기 때문에 Vyper는 수정자를 사용하지 않습니다. 또한 개인이 파일 전체에서 바운스되는 코드를 개발하도록 권장하여 가청성을 줄입니다. Vyper에는 수정자가 없기 때문에 코드에 상태 변경을 추가하는 것은 불가능합니다.

Vyper에서 제외되는 또 다른 기능은 상속입니다. Solidity에서 여러 계약은 상위 계약의 기능을 상속할 수 있습니다. 의견 불일치가 있는 경우 개인이 우선 순위 규범을 이해해야 합니다. Vyper는 클래스 상속을 사용하지 않습니다. 코드의 잠재적인 복잡성 원인을 제거하여 가청성을 향상시키기 때문입니다. 일반적으로 Vyper는 Vyper 기반 스마트 계약 사용자를 더 잘 보호하기 위해 코드베이스를 더 잘 검사하고 보안을 강화하기 위해 일부 기능을 교환하는 보다 미니멀한 코딩 언어입니다.

Solidity는 블록체인 공간에서 가장 인기 있고 잘 알려진 프로그래밍 언어 중 하나일 수 있지만 일부 언어는 개발자에게 더 쉬운 학습 곡선을 제공합니다. 또한 프로그래밍 언어가 더 단순해지면 새로운 개발자를 업계에 쉽게 유치할 수 있습니다.

Radix의 개발자인 RDX Works의 최고 전략 책임자인 Adam Simmons는 Cointelegraph에 다음과 같이 말했습니다. 이는 단순히 언어를 더 단순하게 만드는 것이 아니라 직관적이고 안전한 개발자 도구를 만드는 것입니다.”라고 계속해서 말합니다.

“최고의 DeFi는 단 200년 만에 TVL이 200억 달러 이상으로 성장했습니다. 매우 높은 수준의 수요가 있음이 분명합니다. 그러나 자본이 2배 증가했음에도 불구하고 개발자 수는 19,000배 증가하여 총 약 30명(전 세계 약 XNUMX천만 명의 개발자 중)에 불과했습니다.”

분산 금융 공간에서 볼 수 있는 높은 수준의 성장에도 불구하고 개발자의 수는 수요에 맞게 증가하지 않았습니다. Simmons는 개발자들이 Solidity가 블록체인 개발로 전환하기에는 너무 어렵다는 것을 발견했을 수 있다고 믿습니다.

“개발자들은 Solidity의 가파른 학습 곡선과 보안에 대한 높은 수준의 위험 때문에 Web3에서 정규직 전환을 주저합니다. 매우 재능 있는 개발자와 보안 감사에 수백만 달러를 지출했음에도 불구하고 DeFi는 여전히 해킹과 악용으로 돈을 쏟아내고 있습니다. 이것만으로도 개발자들이 이 공간에 진입하는 것을 막을 수 있습니다.”

“적절한 언어와 도구를 사용하면 개발자가 전체 산업을 훨씬 더 빠르게 성장시킬 수 있습니다. 90년대에 게임 엔진이 개발자에게 비디오 게임 제작을 혁신할 수 있는 도구를 제공한 것처럼 올바른 Web3 언어와 도구를 통해 개발자는 Web3의 성장을 가속화할 수 있습니다.”라고 Simmons가 덧붙였습니다.

Scrypto는 또한 보안, 단순성 및 사용자 친화성에 중점을 둡니다. Scrypto 거래는 자산에 중점을 둡니다. 사용자가 시스템 리소스를 배포하는 방법을 정의합니다. 또한 다중 구성 요소 트랜잭션에서 사용자 또는 다른 구성 요소가 반환된 리소스를 처리하는 방법을 나타낼 수도 있습니다.

이더리움의 거래는 일반적으로 스마트 계약을 호출합니다(이더리움의 DApp과 토큰은 스마트 계약이기 때문에). 대조적으로, Scrypto의 트랜잭션에는 자산을 한 구성 요소에서 다른 구성 요소로 이동하는 작업이 포함됩니다.

예를 들어 사용자 A가 사용자 B에게 10개의 사용자 지정 토큰을 보내려는 경우 트랜잭션은 해당 토큰이 포함된 볼트에서 10개의 토큰을 인출하려고 하는 것으로 표시됩니다. 거래는 또한 해당 토큰을 사용자 B의 계정 구성 요소의 입금 방법으로 보낼 것임을 보여줍니다. 리소스(이 경우 토큰)는 어딘가에 있어야 하므로 버킷(컨테이너)을 사용하여 사용자 A에서 사용자 B로 토큰을 전송합니다.

위의 예에서 사용자는 토큰 스마트 계약을 호출하는 대신 리소스(토큰)가 포함된 버킷을 두 번째 사용자의 입금 방법으로 전송합니다. DApp과의 상호 작용은 사용자가 계정에서 토큰을 인출하고 상호 작용하려는 관련 구성 요소에 전달하는 방식으로 유사하게 작동합니다. 요약하면 Scrypto는 사용자가 실제 자산을 저장하고 전달하는 자산 기반 접근 방식을 취합니다. 자산 기반 접근 방식을 사용하면 토큰(리소스), 토큰 풀(저장소) 및 사용자(구성 요소)와 더 쉽게 상호 작용할 수 있으므로 개발자가 DApp을 더 쉽게 코딩할 수 있습니다.

다른 예를 들어, Uniswap과 같은 스와핑 DApp이 Scrypto로 코딩된 경우 개발자는 스왑에 대한 거래 방법만 코딩하면 됩니다. 먼저 DEX는 사용자가 들어오는 토큰 A 컨테이너를 식별한 다음 환율을 계산해야 합니다. 다음으로 들어오는 토큰이 예치되고 DEX는 올바른 양의 토큰 B를 사용자에게 다시 보냅니다.

블록체인 개발자는 어떤 프로그래밍 언어를 선택해야 하나요?

개발자는 블록체인 개발을 위해 기존 프로그래밍 언어(C++, Python, JavaScript)와 함께 Solidity, Vyper 및 Scrypto와 같은 특별히 구축된 솔루션을 사용할 수 있습니다. 여러 프로그래밍 언어는 개발자에게 작업할 수 있는 다양한 도구를 제공하기 때문에 블록체인 공간에 유용할 수 있습니다. 

예를 들어, C++, JavaScript 및 Python에 익숙한 개발자는 Solidity가 매력적이라고 ​​생각할 수 있습니다. Python에 익숙한 개발자는 Vyper에 끌릴 수 있지만 Rust에 익숙한 개발자는 Scrypto 언어를 사용하도록 선택할 수 있습니다.

최근 : 소셜 토큰은 팬 기반에서 인센티브에 이르기까지 Web3의 엔진이 될 것입니다.

Simmons는 Cointelegraph에 다음과 같이 말했습니다. 이러한 언어가 제품 시장이 개발자에게 적합하고 가장 중요하게 해당 개발자가 강력하고 유용하며 안전한 DApp을 구축할 수 있도록 함에 따라 업계가 최상의 결과를 제공하는 언어로 끌리는 것을 보게 될 것입니다.”

Solidity는 이더리움 및 유사한 블록체인 네트워크에서 작업하려는 개발자에게 자연스럽게 선택이 될 것입니다. 동시에 Vyper와 Scrypto는 단순성과 추가 보안을 선호하는 개발자를 끌어들일 수 있습니다. Scrypto는 향상된 단순성과 자산 지향 접근 방식으로 인해 개발자에게 선호될 수도 있습니다.

출처: https://cointelegraph.com/news/vyper-solidity-and-scrypto-how-the-smart-contract-languages-compare