R3E 네트워크의 핵심 개발자이자 설립자인 지미 랴오(Jimmy Liao)는 솔리디티 0.8.x 스마트 계약을 네오(Neo) N3 바이트코드로 컴파일하는 도구인 네오(Neo) 솔리디티 컴파일러를 개발 중이라고 밝혔습니다. 이 프로젝트를 통해 개발자는 솔리디티 로 계약을 작성하고 네오(Neo) N3 블록체인에 배포할 수 있게 됩니다.
네오(Neo) 솔리디티 란 무엇인가요?
네오(Neo) 솔리디티 컴파일러는 솔리디티 스마트 계약을 네오(Neo) N3와 호환되는 바이트코드 및 매니페스트 파일로 변환합니다. 이 컴파일러는 주로 Rust로 작성되었으며, 기본 및 고급 솔리디티 기능을 모두 테스트할 수 있는 인프라를 포함하고 있습니다. 프로젝트 문서에 따르면, 이 컴파일러의 목표는 이더리움 개발자들이 네오의 네이티브 스마트 계약 언어를 배우는 대신 기존의 솔리디티 지식을 활용하여 네오(Neo) N3 기반의 스마트 계약을 개발할 수 있도록 지원하는 것입니다.
이 컴파일러는 솔리디티 0.8.x 소스 코드를 입력으로 받아 네오(Neo) N3의 .nef 바이트코드 파일과 .manifest.json 파일을 출력합니다. 또한 솔리디티 컨트랙트에서 이더리움 요청 사항(ERC) 토큰 표준 패턴(이더리움 요청 사항(ERC)-20, 이더리움 요청 사항(ERC) -721)을 감지하고 이를 Neo의 해당 표준(NEP-17, NEP-11)에 매핑합니다.
개발자는 컨트랙트 컴파일 시 4단계 최적화 수준(0~3) 중에서 선택할 수 있습니다. 이 도구는 명령줄 인터페이스를 통해 작동하며, 이더리움 개발에 일반적으로 사용되는 두 가지 개발 프레임워크인 Hardhat 및 Foundry와의 통합을 위한 기본 기능을 제공합니다.
네오(Neo) 솔리디티 네오(Neo) X 프로젝트와 다음과 같은 점에서 차이가 있습니다. 네오(Neo) X는 개발자가 솔리디티 컨트랙트를 수정 없이 직접 네트워크에 배포하는 이더리움 가상 머신(EVM) 사이드체인입니다. 반면, 네오(Neo) 솔리디티 는 솔리디티 소스 코드를 네오(Neo) N3 호환 바이트코드로 컴파일하여, 별도의 EVM 호환 체인이 아닌 네오(Neo) N3 메인 네트워크에 컨트랙트를 네이티브로 배포할 수 있도록 합니다.
기술 아키텍처
컴파일 과정은 솔리디티 소스 코드를 율(Yul) 중간 표현으로 변환한 다음, 타입 검사 및 유효성 검사를 위해 의미 분석을 수행합니다. 다단계 최적화 프로그램은 네오(Neo) 관련 변환을 적용한 후, 코드 생성기가 네오VM 바이트코드와 매니페스트 파일을 생성합니다.
컴파일러에는 Neo의 실행 환경 내에서 이더리움 가상 머신(EVM) 동작과 일치하도록 설계된 메모리 관리, 스토리지 작업, ABI 인코딩 및 암호화 기능을 제공하는 런타임 라이브러리가 포함되어 있습니다.
컴파일러의 내부 아키텍처 및 구현 결정에 관심 있는 개발자를 위해 프로젝트 저장소에서 자세한 기술 설계 사양을 확인할 수 있습니다.
계약서 예시
이 저장소에는 컴파일러의 기능을 보여주는 여러 예제 계약이 포함되어 있습니다. WGAS는 WETH9 패턴을 따르고 NEP-17을 준수하는 래핑된 GAS 토큰 구현체입니다. FlashLoan은 0.09%의 수수료를 적용하는 아베(AAVE) V2 스타일의 플래시론 풀을 구현합니다. SimpleAMM은 유니스왑(Uniswap) V2의 설계를 기반으로 하는 상수 수익 자동화 시장 메이커 입니다.
추가적인 예로는 OpenZeppelin의 VestingWallet과 유사한 선형 베스팅 일정을 제공하는 TokenVesting, Compound의 단일 자산 대출 풀 메커니즘을 적용한 SimpleLending, 그리고 스테이킹 및 제안 기능을 통해 MolochDAO 스타일의 거버넌스를 구현하는 SimpleDAO가 있습니다.
프로젝트 문서에 따르면 모든 예제 계약은 Neo의 로컬 개발 환경인 네오(Neo) Express에 배포되어 상태 변경 작업을 통해 테스트되었습니다.
개발 현황
프로젝트 문서에 따르면 핵심 컴파일러는 약 85% 완성되었으며 상용 배포 준비가 완료된 상태입니다. 런타임 라이브러리는 75%, 개발자 도구는 70% 완성되었으며, CLI는 완벽하게 작동합니다. 문서는 80% 완성된 것으로 나타납니다.
프로젝트 문서에는 현재 몇 가지 제한 사항이 명시되어 있습니다. 함수 오버로딩은 부분적으로 지원됩니다. 함수는 시그니처 변형된 이름을 사용하여 인자 개수가 다른 오버로딩이 가능하지만, 인자 개수가 같은 오버로딩은 허용되지 않습니다. {gas: ...} 및 {value: 0} 과 같은 이더리움 가상 머신(EVM) 호출 옵션은 허용되지만 무시됩니다. 0이 아닌 값 전송에는 NEP-17 네이티브 호출을 사용해야 합니다. 가스 계산은 시스템 호출별 가스 힌트를 통해 근사적으로 이루어지며, 오퍼레이션 코드 수준의 수수료는 약 80%의 정확도를 보입니다.
문서에서는 메인넷 배포 전에 테스트넷 검증을 권장합니다.
기술 설계 사양은 여기에서 확인할 수 있으며, 풀 리포지토리 프로젝트 저장소는 아래에서 확인할 수 있습니다.
https://github.com/r3e-network/neo-solidity/tree/main




