EOSCC 프리뷰 버전을 공개합니다: EOSIO 스마트 컨트랙트 개발 툴킷

Jeeyong Um
4 min readAug 26, 2019

SIO4.CDTEOSCC로 변경되었습니다.

EOSCC S̶I̶O̶4̶.̶C̶D̶T̶ 프리뷰 버전을 공개합니다. EOSCC는 EOSIO와 호환되는 스마트 컨트랙트 개발 도구로 컴파일러와 표준 라이브러리를 포함합니다. EOSIO.CDT를 기반으로 작성하였으며 자체 버그픽스와 업그레이드 사항이 반영되어 있습니다.

https://github.com/turnpike/eoscc/releases/tag/v1.6.3-pre1

[[deprecated]]
SIO4.CDT는 블록체인 연구를 목적으로 EOSIO를 포크한 3OSiO 프로젝트의 일부입니다. EOSIO 프로젝트를 통해 안정적이고 신뢰할 수 있는 소프트웨어가 제공되고 있지만, 3OSiO는 실험적인 기능을 포함하여 더 빠른, 더 잦은 배포(RERO; Release Early, Release Often)를 목표로 합니다. 네임스페이스에 3osio 대신 sio4를 사용하는 이유가 궁금하다면 여기를 참고해주세요.

EOSIO.CDT와 최대한 호환성을 유지하고, 동일한 사용한 경험을 제공하기 위해 패키지 이름 외에 파일명 등은 변경하지 않았습니다. 대신 EOSIO.CDT와 동시에 설치할 수 없으며, 기존에 사용하던 EOSIO.CDT가 있는 경우 제거 후 설치하셔야 합니다.

EOSCC는 개발 초기 단계이므로 모든 경우에 대한 엄격한 테스트를 거친 것은 아닙니다. 블록체인 게임 플랫폼 GameXCoin에서 이미 일상적인 컨트랙트 개발에 사용하고 있으나, 본인의 제품 개발에 사용시 발생하는 문제에 대해서는 책임지지 않는다는 점 유의해주세요. 새로운 기능 제안이나 버그 리포트는 언제나 환영합니다.

주요 변경 사항은 다음과 같습니다. 전체 내용은 릴리스 노트에서 확인하실 수 있습니다.

빌드 실패 해결 / ABI 생성 개선

잘못된 메모리 액세스로 컨트랙트 컴파일을 실패하게 만드는 몇 가지 경우가 있었습니다. 프리뷰 버전의 SIO4.CDT는 다음 이슈를 해결하는 패치를 포함하고 있습니다.

EOSIO/eosio.cdt #527, #541, #558, #600

ABI 생성 또한 개선되었습니다. 정상적으로 컨트랙트를 작성했음에도 타입이 생성된 ABI에 포함되지 않는 경우들이 있었는데, JSON에 정상적으로 모두 포함되도록 수정되었습니다.

EOSIO/eosio.cdt #601, #602

libc++ 업그레이드 / c++2a 라이브러리 지원

libc++을 5.0.0에서 9.0.0-rc2 업그레이드 하였고, 기본 설정으로 c++2a 표준 라이브러리를 지원합니다. (EOSIO.CDT는 c++17) 즉 c++20 지원 표시된 함수를 컨트랙트에서 사용할 수 있습니다.

예를 들어, std::string::starts_with 는 c++20 이후에 지원되는데 다음 예제는 SIO4.CDT로 컴파일 할 수 있습니다.

ctime 지원

EOSIO.CDT는 <ctime> 을 지원하지 않고 있습니다. 정확한 이유는 알 수 없지만, 네이티브 환경에서의 시간 관련 함수와 동작이 같을 것이라는 오해로부터 발생하는 실수를 막기 위해 의도적으로 제외되었을 가능성도 있습니다. 편의를 위해 SIO4.CDT에서는 다시 ctime을 지원합니다. 다만 사용하실 때는 어떻게 동작하는지 정확하게 이해하고 사용하셔야 합니다. 예를 들어, std::time은 UNIX 시간을 반환하지만 이는 실제 시간이 아닌 블록 타임스탬프입니다. (eosio::current_time을 랩핑)

libc 업그레이드

libc를 1.1.18에서 1.1.23으로 업그레이드 하였습니다. 이 업그레이드를 통해 얻게 되는 장점이 몇 가지 있는데, 예를 들어 1.1.23 버전에서 수학 라이브러리(math.h)의 구현체가 변경되면서 관련 함수의 실행 속도가 빨라진 것입니다. 컴파일 된 바이너리 사이즈가 증가하나 RAM 비용에 대한 지출은 일회적인데 반해 CPU는 매 트랜잭션마다 반복적으로 소모하므로, 본인의 필요에 따라 선택해서 사용하시길 바랍니다.

책임 배제

소프트웨어는 “있는 그대로” 제공된다. 판매적격성, 특정 용도에 대한 적합성, 준법성, 혹은 그 이상의 범위를 포함한 사항에 있어서, 명시적 혹은 암시적인 어떠한 보증도 하지 않는다. 계약, 불법행위등의 과정상의 개입여부에 상관없이 어떠한 상황에서도, 본 소프트웨어의 저작자 혹은 저작권자는, 소프트웨어에서 혹은 소프트웨어와 연관되어 발생하는, 또한 사용과정중 혹은 기타 거래도중 발생하는 어떠한 소유권 청구, 피해, 혹은 기타 다른 법적 책임에 대해서도 책임을 지지 않는다.

--

--