LLVM을 사용하여 ETC 스마트 컨트랙트 언어 만들기 - 기타주제

  • LLVM IR 코드 생성

  • allocatea 명령은 현재 기능의 메모리 프레임에 32바이트 프레임 객체(기능-로컬 객체)를 할당.

  • 메모리 공간 인덱싱 보통 EVM 스마트 계약 ABI 정보를 내보내는 것은 언어에 달려 있다. 하지만 우리는 계약서 ABI를 방출하기 위해 LLVM IR 패스를 작성할 수 있다.

제한 사항 EVM은 결정적 실행을 위해 설계되었습니다. 이로 인해 매일 사용하는 일부 유틸리티에 액세스 할 수 없습니다. 목록은 다음과 같습니다.


  • 힙 공간이 없습니다. 동적으로 할당 된 메모리 공간을 얻기 위해 llvm.malloc 또는 이와 유사한 것을 호출 할 수 없습니다. 실제로 힙 공간이 필요한 경우 malloc 함수를 작성하여 메모리 공간을 동적으로 할당 할 수 있습니다.

  • 부동 소수점 지원이 없습니다. EVM에는 부동 소수점 명령이 없으므로 합의를 깰 가능성이 매우 높습니다. 해결 방법 : 필요한 경우 부동 소수점 계산을 위해 소프트웨어 구현 에뮬레이션 라이브러리를 사용하십시오.

  • 동적 점프가 없습니다. 동적 점프는 정적 분석 및 검증을 어렵게합니다. EVM에는 점프 대상의 레이블을 지정하는 특정 비 자리 표시 자 자리 표시 자 명령 JUMPDEST가 있습니다. JUMPDEST가 아닌 주소로 점프하면 EVM 실행이 종료됩니다.

따라서 EVM은 제한된 도메인 별 실행 환경이므로 기존 프로그램을 모두 실행할 것으로 기대할 수 없습니다.



다음 방향은? 작은 스마트 컨트랙트 언어를 생성 (포팅)하는 것에 대해 너무 많이! "완벽한"언어 구현은 아니지만 EVM-LLVM을 사용하여 EVM 스마트 계약을 생성하는 데 필요한 필수 구성 요소를 보여줍니다. LLVM 인프라를 통해 블록 체인 세계에 도움이되는 훨씬 더 복잡하고 유용한 언어를 만들 수 있습니다. 작은 컴파일러를 개선하기 위해 할 수있는 일은 많이 있습니다. 다음은 몇 가지 아이디어입니다.


  • 스마트 계약 소스를 EVM 이진 코드로 내보낼 전체 파이프라인을 만드십시오.

  • 장난감 언어에 더 정교한 메커니즘 추가. 예를 들어, Kaleidoscope의 다른 기능 구현, EVM별 운영, 또는 Ethereum Classic과 같은 지원 블록체인에 배포!

  • 빛나는 새 언어로 ERC20 토큰 구현을 만드십시오.

5 views

Recent Posts

See All

ETC 피닉스 하드포크 업데이트 6월 1일 진행 예정

이더리움 클래식 메인넷은 다가오는 10.500.839블록에서 피닉스 하드포크를 활성화합니다. 예상 시점은 2020년 6월 1일입니다. 이번 하드포크는 아틀란티스, 아가타에 이어 이더리움 클래식의 세 번째 업그레이드입니다. 피닉스 하드포크 이후 이더리움 클래식과 이더리움은 완벽하게 호환되며 동일한 기능을 갖게 됩니다. 이번 하드포크의 주요 목표는 이더리움 이