https://secureum.substack.com/p/solidity-101
1. Solidity 란?
Solidity는 EVM을 목표로하는 이더 리움 (및 블록 체인)에서 스마트 계약을 구현하기위한 고급 언어입니다. Solidity는 2014 년 Gavin Wood에 의해 제안되었으며 나중에 Christian Reitwiessner, Alex Beregszaszi 및 기타 사람들이 이끄는 Ethereum의 견고 팀이 개발했습니다.
2. Solidity 언어의 기원
Solidity는 주로 C++의 영향을 받았고, Python과 JavaScript의 영향도 일부 받았습니다.
- C++의 영향: Solidity의 문법(syntax)과 객체 지향 프로그래밍(OOP) 개념은 C++에서 주로 차용되었습니다. 예를 들어, 클래스(여기서는 contract) 구조나 상속, 접근 제어자(public, private 등) 등이 C++과 유사합니다.
- Python의 영향: Solidity는 Python에서 다음과 같은 개념을 차용했습니다:
- modifier (함수 실행 전 조건 검증 등)
- 다중 상속 (multiple inheritance)
- C3 선형화(C3 linearization, 메서드 탐색 순서를 정하는 알고리즘)
- super 키워드
- JavaScript의 영향: 초기 버전의 Solidity(v0.4.0 이전)에서는 함수 범위(function-level scoping)와 var 키워드 같은 JavaScript 스타일의 요소들이 사용되었습니다. 하지만 시간이 지나면서 이런 JavaScript적 요소들은 줄어들었습니다.
3. Solidity의 특징
Solidity는 정적 타입(statically typed) 언어로, 상속(inheritance), 라이브러리(libraries), 복잡한 사용자 정의 타입(complex user-defined types)을 지원합니다. 또한 완전한 기능을 갖춘 고수준(high-level) 언어입니다.
4. Solidity 소스 파일 구조와 권장 작성 순서