이더리움 마스터하기, 2nd Edition
by Carlo Parisi, Alessandro Mazza, Niccolo Pozzolini, Gavin Wood, Andreas M. Antonopoulos
8장. 스마트 컨트랙트와 Vyper
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
Vyper는 개발자가 이해하기 쉬운 코드를 쉽게 생성할 수 있도록 하여 뛰어난 감사 가능성을 제공하기 위해 노력하는 EVM을 위한 잘 정립된 컨트랙트 지향 프로그래밍 언어입니다. 실제로 Vyper의 원칙 중 하나는 개발자가 오해의 소지가 있는 코드를 작성하는 것을 사실상 불가능하게 만드는 것입니다.
이 장에서는 스마트 컨트랙트의 일반적인 문제를 살펴보고, Vyper 컨트랙트 프로그래밍 언어를 소개하며, 이를 Solidity와 비교하여 차이점을 보여드리겠습니다.
취약성과 바이퍼
2023년에만 이더리움 생태계에서 스마트 콘트랙트 취약점으로 인해 약 20억 달러가 도난당했습니다. 취약점은 코드를 통해 스마트 콘트랙트에 도입됩니다. 이러한 취약점과 다른 취약점이 의도적으로 도입된 것은 아니라고 강력하게 주장할 수 있지만, 어쨌든 바람직하지 않은 스마트 콘트랙트 코드는 이더리움 사용자에게 예기치 않은 자금 손실을 초래하는 것이 분명하며, 이는 바람직하지 않습니다. 바이퍼는 안전한 코드를 더 쉽게 작성하거나, 실수로 오해의 소지가 있거나 취약한 코드를 작성하는 것을 더 어렵게 만들 수 있도록 설계되었습니다.
Solidity와의 비교
안전하지 않은 코드를 작성하기 어렵게 만드는 방법 중 하나는 Solidity의 일부 기능을 의도적으로 생략하는 것입니다. 이러한 설계 선택은 보안 우선 원칙에 뿌리를 둔 Vyper의 뿌리와 Python의 명확성과 단순성에서 얻은 영감을 반영한 것입니다. 바이퍼에서 스마트 콘트랙트 개발을 고려하는 분들은 바이퍼에 없는 기능과 그 이유를 이해하는 것이 중요합니다. 이 섹션에서는 이러한 기능을 살펴보고 왜 이러한 기능이 생략되었는지에 대한 근거를 제시할 것입니다.
모호성을 줄이기 위해 기능 세트를 제거했지만, Vyper는 개발자와 감사자의 실질적인 요구를 충족하기 위해 발전해왔습니다. 예를 들어, 계약서를 단일 파일에 보관하는 원래의 철학은 감사 가능성을 극대화하는 데 도움이 되었지만, 프로토콜이 점점 더 커지고 복잡해지면서 결국 병목 현상이 발생했습니다. 이를 해결하기 위해 최신 Vyper는 개발자가 컨트랙트를 여러 파일로 분할하는 동시에 상태 액세스 및 코드 재사용에 대한 엄격한 제어를 유지할 수 있는 정교한 모듈 시스템을 도입했습니다. 이 모듈 시스템은 기존의 상속이 아닌 구성 원칙을 따르기 때문에 구조와 가독성 간에 더 나은 균형을 이룹니다. 바이퍼는 개발자가 명확성과 감사 용이성을 중시하는 탈중앙 금융(DeFi) 프로토콜 및 스테이킹 시스템과 같은 고수준 보안 보장 사용 사례에서 그 역할이 점점 더 커지고 있습니다.
수정자
7장에서 살펴본 것처럼 Solidity에서는 수정자를 사용하여 함수를 작성할 수 있습니다. 예를 들어, 다음 함수 changeOwner 는 실행의 일부로 onlyBy 라는 수정자에서 코드를 실행합니다:
functionBecome an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access