
Solidity 1.0.0 탐구: 스마트 계약의 핵심 이정표
저자: Adam Boudjemaa
서론
Solidity GitHub 저장소, Solidity 로드맵, 트위터 상의 커뮤니티 대화, 활성화된 Pull Request 및 Issues 등을 폭넓게 분석한 본 글은 Solidity의 미래 방향성을 심층적으로 탐구합니다.
이 선도적인 스마트 계약 프로그래밍 언어는 곧 0.9.0 및 1.0.0 업그레이드를 통해 여러 기대되는 개선 사항을 도입할 예정입니다.
본문은 커뮤니티의 의견과 현재 진행 중인 논의를 바탕으로 한 Solidity의 최신 발전 및 개선사항을 소개하는 것을 목표로 합니다. 제공된 정보가 아직 확정된 것은 아니지만, 잠재적인 기술적 진보 방향을 제시하고 있습니다.
1. require()와 Custom Error의 혁신적 통합
현재 방법(0.8.x):

0.9.0 또는 1.0.0에서 예상됨:

문자열 메시지나 커스텀 에러를 던지는 데 많은 if 조건문을 사용하는 것보다, require()와 커스텀 에러를 결합하면 코드가 더욱 명확해지고 가스도 절약됩니다.
2. 내부 표현(IR) 최적화: 효율성 해방
Solidity에서 내부 표현(IR) 과정은 스마트 계약 소스 코드를 이더리움 가상 머신(EVM)의 실행 가능한 명령어로 변환하는 데 핵심적인 역할을 합니다.
내부 표현은 복잡한 코드를 단순화하고 표준화하여 기계어로의 변환 과정을 더욱 효율적으로 만듭니다. Solidity가 곧 출시할 0.9.0 버전의 개선은 이러한 컴파일 과정을 더 빠르고 효율적으로 만들어 궁극적으로 비용을 절감하고 개발자의 생산성을 향상시키는 것을 목표로 하고 있습니다.
3. 강화된 오류 처리: 코드 명확화 및 간소화
향후 업데이트에서는 Solidity의 오류 처리 기능이 강화되어 보다 직관적인 오류 메시지와 쉬운 디버깅이 가능할 것으로 예상됩니다.
이러한 개선은 복잡한 계약을 다루는 개발자에게 특히 유용하며, 시간을 절약하고 잠재적 오류를 최소화할 수 있습니다.
4. 고정소수점 산술 연산: 고정밀도와 고성능
[역주: 고정소수점은 부동소수점과 대비되는 컴퓨터에서 소수를 표현하는 데이터 형식으로, 정수부와 소수부의 길이가 모두 고정되어 있어 부동소수점보다 안전하다. 현재 Solidity에는 소수를 표현하는 기본 데이터 형식이 없어 개발자들이 원시 값을 큰 수로 곱해 소수 자리를 수동으로 확보하고 이후 계산에서도 소수점을 계속 신경 써야 하므로 매우 번거롭다.]
현 단계에서는 ABDKMath64x64 및 DSMath 같은 외부 라이브러리가 Solidity로 고정소수점을 구현하고 있습니다.
0.9.0 버전 업데이트는 고정소수점 연산을 언어 차원에서 기본 지원함으로써 외부 라이브러리 의존을 없앨 전망이며, 이를 통해 소수 계산이 훨씬 간편해질 것입니다.
5. EVM 객체 형식(EOF): 스마트 계약 바이트코드 구축
Solidity의 다가올 EOF 업그레이드는 스마트 계약에 구조화되고 버전 관리 가능한 바이트코드를 도입할 준비를 하고 있습니다.
이 개선은 향후 계약의 업데이트를 보다 쉽게 구현하고, 하위 호환성을 유지하며 컴파일 단계에서 보다 효과적인 분석을 가능하게 할 것으로 기대됩니다.
이는 스마트 계약 개발자의 직접적인 코딩 경험을 변화시키지는 않지만, 컴파일러 출력 결과가 가스를 더 절약하게 될 것입니다.
6. 일시적 저장 공간(Transient Storage): 임시적이며 효율적인 데이터 처리
Solidity의 새로운 기능인 일시적 저장 공간은 계약 실행 중 데이터를 일시적으로 보관하되 블록체인에 영구 기록하지 않는 방법을 제안합니다. 이 방법은 가스 소모 측면에서 더욱 효율적일 것으로 예상됩니다.
아래와 같은 코드 형태의 일시적 저장이 Solidity 0.9.0 또는 1.0.0에서 등장할 가능성이 큽니다.

7. 기본 재진입 보호 기능 통합
버전 0.8.0 이전에는 SafeMath 라이브러리가 산술 연산 시 오버플로우 및 언더플로우 문제를 피하기 위해 개발자들 사이에서 널리 사용되었습니다. Solidity 0.8.0 출시와 함께 이러한 보안 검사는 언어에 직접 내장되었습니다.
마찬가지로 Solidity 0.9.0 또는 1.0.0 버전에서는 기본 재진입 보호 기능이 통합될 것으로 예상됩니다. 이 기능은 재진입 공격을 방지하기 위한 보안 프로토콜 구현을 단순화하는 것을 목표로 합니다.
아래와 같은 코드를 보게 될 것입니다:

8. 상속 및 저장소(Storage) 레이아웃 재구성
Solidity에서 상속은 기존 계약의 속성과 기능을 채택하는 새 계약을 생성할 수 있게 합니다. 계획된 업데이트는 상속 및 저장소 레이아웃의 선형화를 개선하여 계약 아키텍처의 예측 가능성과 조직성을 향상시키고자 합니다. 이는 저장소 사용 효율을 높이고 다중 상속 시나리오에서의 혼란을 줄일 수 있습니다.
예를 들어, ParentA와 ParentB로부터 상속받는 Child 계약은 최적화된 저장소 레이아웃과 연속적인 변수 저장을 가지게 되어 저장소 작업 비용을 낮출 수 있습니다.
9. 강화된 컴파일 플래그 및 구성 옵션
Solidity 개발은 컴파일 플래그 및 구성 설정 범위를 확장하여 개발자가 컴파일 과정에 높은 수준의 제어권을 갖도록 하는 것을 포함합니다. 이러한 강화는 가스 최적화, 보안 검사, 디버깅 기능 등에 대한 세밀한 제어를 통해 더욱 맞춤화된 계약 배포를 가능하게 할 수 있습니다.
새로운 컴파일 플래그를 통해 개발자는 특정 최적화나 보안 검사를 켜고 끌 수 있습니다:
예를 들어, 새로운 컴파일 플래그 --enable-loop-optimization은 반복문 최적화에 집중하여 가스 효율성을 높이고, 또 다른 새 컴파일 플래그 --strict-security-checks는 컴파일 과정에서 엄격한 보안 분석을 도입할 수 있습니다.
10. 개선된 디버깅 도구 및 오류 메시지
더 풍부한 오류 메시지를 갖춘 강화된 디버깅 도구는 특히 복잡한 계약 구조에서 개발 과정을 크게 단순화할 수 있습니다. 개선된 오류 메시지는 코드의 문제를 깊이 이해하도록 돕고, 고급 디버깅 도구는 문제를 더 효과적으로 발견하고 수정하는 데 도움을 줄 수 있습니다.
11. 고급 데이터 타입 및 구조 지원
Solidity에 복잡한 데이터 타입과 구조를 도입하면 새로운 계약 설계 및 기능 가능성에 영감을 줄 수 있습니다. 여기에는 보다 복잡한 숫자 타입 지원, 향상된 데이터 구조, 혹은 계약 내 대규모 데이터셋 처리 방법 개선 등이 포함될 수 있습니다.
Solidity는 데이터를 정렬된 방식으로 조직하여 효율적인 검색을 가능하게 하는 TreeMap과 같은 새로운 데이터 구조를 도입할 수 있습니다. 이는 투표 시스템과 같이 데이터를 정렬해야 하는 계약에서 유용할 수 있습니다. [역주: 적흑트리와 유사] 또 다른 발전은 고정소수점과 같은 보다 복잡한 숫자 타입을 지원하여 계약 내에서 정밀한 수학 연산을 직접 수행하는 것이 될 수 있습니다.
12. 제네릭 및 템플릿 도입
Solidity의 제네릭과 템플릿은 보다 유연하고 재사용 가능한 코드 작성을 가능하게 합니다. 예를 들어, ERC20 토큰, NFT 등 다양한 유형의 자산을 표준화된 방식으로 처리하는 제네릭 함수를 만들 수 있으며, 각 특정 자산 유형마다 함수를 다시 작성할 필요가 없습니다. 이는 다양한 시나리오에 단일 함수를 적용할 수 있기 때문에 계약 설계 방식과 개발 효율성을 개선할 것입니다.

미래 전망: Solidity 1.0.0을 향한 여정
GitHub, Twitter, Ethresearch, Reddit 등의 다양한 플랫폼에서 Solidity 커뮤니티 내부에서는 0.9.0 버전 개발 계획에 관한 열띤 논의가 진행 중입니다.
한 가지 핵심 논쟁이 펼쳐지고 있습니다:
이 언어의 완전한 성숙을 선언하기 위해 신중하게 바로 Solidity 1.0.0으로 전환할 것인지, 아니면 먼저 0.9.0 버전을 통해 점진적으로 고급 버전으로 나아갈 것인지?
커뮤니티의 피드백과 창의적인 아이디어의 영향을 받아, Solidity 1.0.0의 기대되는 첫 등장은 이더리움의 주요 업데이트와 일치할 가능성이 있으며, 이는 전체 생태계의 성장과 안정성을 반영합니다.
1. 타입 시스템의 진화: 유연성과 보안성 향상. Haskell 또는 Scala 같은 함수형 프로그래밍 언어에서 영감을 얻은 타입 시스템의 업그레이드가 예상됩니다. 이러한 진화는 계약 개발의 보안성과 유연성을 증대시키는 것을 목표로 합니다.
2. 기본 오라클 지원 통합: 외부 데이터 상호작용 단순화. Decentralized Oracle에 대한 내장 지원을 Solidity에 통합하는 계획이 포함되어 외부 데이터 소스와의 보다 안전하고 직접적인 상호작용을 촉진합니다.
3. 상태 관리 개선: 블록체인 상호작용 완성. 상태 관리 기능의 향상이 논의 중이며, 상태 채널이나 사이드체인 등의 요소를 내장 구조로 도입하여 블록체인 상의 상호작용을 최적화하고 가스 비용을 낮추는 것을 목표로 할 수 있습니다.
4. 계약 설계에서의 모듈화 접근: 재사용성 향상. 교체 가능한 구성 요소를 사용할 수 있도록 모듈화된 계약 아키텍처로의 전환이 고려되고 있습니다. 이는 개발 과정을 크게 단순화하고 코드의 운용성을 향상시킬 수 있습니다.
5. 정식 검증 도구 통합: 계약 신뢰성 보장. 정식 검증 도구(Formal Verification Tools)를 Solidity에 직접 통합하려는 움직임이 있으며, 이는 계약이 특정 기준과 행동을 준수하도록 하여 오류와 취약점의 가능성을 줄이는 것을 목표로 합니다.
6. 크로스체인 기능 구축: 블록체인 간 상호운용성 실현. 향후 업데이트는 기본 크로스체인 호환 기능을 도입하여 Solidity 계약이 다양한 블록체인 프로토콜에서 원활하게 실행될 수 있도록 할 수 있습니다.
7. 고급 개인정보 보호 조치 시행: 데이터 보안 강화. 제로 지식 증명 또는 동형 암호화와 같은 고급 개인정보 보호 도구를 언어에 직접 통합하는 계획이 있으며, 이는 데이터 보안과 사용자 프라이버시를 강화하는 것을 목표로 합니다.
8. 양자 저항 암호학: 미래의 도전에 대비.新兴하는 양자 컴퓨팅 능력을 고려하여, 미래의 잠재적 위협으로부터 이더리움 계약을 보호하기 위해 양자 저항 암호화 방법을 도입하는 것이 고려되고 있습니다.
결론
Solidity의 잠재적 경로를 탐색하면서 본문은 커뮤니티의 통찰력과 현재의 발전, 그리고 커뮤니티 예측을 결합하여 주제에 대한 포괄적인 이해를 제공합니다. 우리는 0.9.0 및 1.0.0 버전의 가능성을 심층적으로 살펴보았지만, Solidity가 개발 여정을 계속함에 따라 실제 궤도와 기능 집합은 변할 수 있습니다. 끊임없이 진화하는 스마트 계약 프로그래밍 세계에서 이러한 대화와 개념들이 어떻게 실현되는지 주목해 주십시오.
TechFlow 공식 커뮤니티에 오신 것을 환영합니다
Telegram 구독 그룹:https://t.me/TechFlowDaily
트위터 공식 계정:https://x.com/TechFlowPost
트위터 영어 계정:https://x.com/BlockFlow_News














