Solidity는 중괄호, 고급, 객체 지향 프로그래밍 언어로 스마트 컨트랙트를 설계하고 구현하기 위해 만들어졌습니다.[3][7]
Solidity는 여러 유명 프로그래밍 언어의 영향을 받고 영감을 받은 중괄호 언어입니다. Solidity는 C++의 영향을 가장 많이 받았지만 Python, JavaScript 등과 같은 언어의 개념도 차용했습니다.[7]
Solidity는 스마트 컨트랙트를 구현하기 위해 이더리움 네트워크 팀에서 설계한 계약 지향 프로그래밍 언어입니다. C++, Python, JavaScript와 같은 프로그래밍 언어에서 영감을 얻었으며 이더리움 가상 머신과 상호 작용합니다.[1][2]
Solidity의 기본 개념은 개발자가 블록체인 네트워크에서 탈중앙화 애플리케이션(DApp)과 자체 실행 계약을 만들 수 있도록 하는 데 중점을 둡니다.
2014년 8월, 이더리움의 공동 창립자인 개빈 우드는 Solidity에 대한 아이디어를 제안했습니다. 이후 Christian Reitwiessner가 이끄는 이더리움 프로젝트의 Solidity 팀이 언어를 만들고 개발했습니다.[8][9]
Solidity는 2015년 8월 7일에 버전 0.1.0으로 처음 출시되었습니다. 처음에는 언어에 기본적이고 제한된 기능만 있었지만 시간이 지남에 따라 Solidity는 수많은 개선과 발전을 거쳤습니다.
Solidity는 이더리움 개발자들 사이에서 빠르게 인기를 얻어 스마트 컨트랙트 개발을 위한 주요 언어가 되었습니다. Solidity를 통해 개발자는 이더리움 블록체인에서 실행되어 다양한 기능과 서비스를 수행하는 코드를 작성할 수 있습니다.
Solidity는 다양한 블록체인 프로젝트와 탈중앙화 애플리케이션(dApp)에서 사용되었습니다. Solidity로 작성된 스마트 컨트랙트는 ERC-20 토큰, 투표 시스템, 시간 잠금 자금 등을 포함한 다양한 용도로 사용될 수 있습니다.[10]
C++의 영향은 변수 선언, for 루프, 함수 오버로딩 개념, 암시적 및 명시적 유형 변환 및 기타 여러 세부 사항에서 볼 수 있습니다.[7]
Solidity는 부분적으로 JavaScript의 영향을 받았습니다. 이는 변수의 함수 수준 범위와 'var' 키워드 사용 때문이었습니다. JavaScript의 영향은 버전 0.4.0부터 줄어들었습니다. 이제 JavaScript와의 주요 유사점은 함수가 'function' 키워드를 사용하여 정의된다는 것입니다.[7]
Solidity는 JavaScript에서 사용할 수 있는 것과 유사한 가져오기 구문 및 의미 체계도 지원합니다. 이러한 점 외에도 Solidity는 다른 대부분의 중괄호 언어와 유사하며 더 이상 JavaScript의 주요 영향은 없습니다.[7]
Solidity에 대한 또 다른 영향은 Python이었습니다. Solidity의 수정자는 훨씬 더 제한된 기능을 가진 Python의 데코레이터를 모델링하려고 시도하면서 추가되었습니다.[7]
Solidity 컴파일러 v0.8.27은 2024년 9월 4일에 출시되었습니다.[5]
다음은 Solidity의 몇 가지 기본 개념입니다.[3][4]
Solidity는 다음을 포함한 스마트 컨트랙트에서 사용할 수 있습니다.[6]
이더리움과 Solidity의 조합으로 개발자는 광범위한 복잡한 애플리케이션을 만들 수 있게 되었습니다. 이더리움은 탈중앙화 플랫폼을 제공하고 Solidity는 강력한 프로그래밍 언어를 제공함으로써 개발자는 안전하고 효율적이며 투명한 스마트 컨트랙트를 만드는 데 필요한 도구를 갖게 되었습니다.
개발자는 Solidity로 스마트 컨트랙트를 작성한 다음 이더리움 블록체인에 배포합니다. 스마트 컨트랙트가 배포되면 다른 계약이나 애플리케이션과 독립적으로 존재합니다. 자체 이더리움 주소와 잔액이 있으며 이더리움 네트워크의 다른 참가자와 마찬가지로 트랜잭션을 만들고 받을 수 있습니다.
스마트 컨트랙트가 트랜잭션에 의해 트리거되면 이더리움 네트워크는 계약의 코드를 실행합니다. 이 코드는 자금 이체에서 다른 계약과의 상호 작용에 이르기까지 광범위한 작업을 수행할 수 있습니다.[11]
또 다른 과제는 스마트 컨트랙트의 처리량과 속도를 제한하고 네트워크에서 트랜잭션을 실행하는 데 필요한 수수료인 가스 비용을 증가시키는 이더리움의 확장성 및 효율성 문제를 해결하는 것이었습니다.[9]
또한 블록체인 공간의 혁신과 경쟁에 발맞추는 것도 또 다른 과제였습니다. 새로운 플랫폼과 언어가 등장하면서 스마트 컨트랙트 개발에 대한 다양한 기능과 절충안을 제공했습니다.
이러한 과제를 해결하고 커뮤니티의 요구와 기대를 충족하기 위해 Solidity는 정기적인 업데이트와 개선을 통해 수년에 걸쳐 지속적으로 진화하고 개선되고 있습니다.
가장 중요한 변경 사항 중 일부에는 구조체, 열거형 및 매핑과 같은 새로운 유형의 도입, 상속, 인터페이스 및 라이브러리 지원, 수정자, 이벤트 및 오류 처리 추가, require 및 revert 함수와 같은 보안 검사 및 모범 사례 구현, 가스 사용량 및 바이트코드 생성 최적화, 오라클 및 블록체인 간 통신과 같은 외부 소스 및 시스템과의 통합이 포함됩니다.[9]