리퀴디티(Liquidity)는 테조스(Tezos)를 위해 개발된 완전 함수형 프로그래밍 언어이다. 2017년 10월 05일 ver 0.1의 초판이 만들어지고 점차 기능이 추가되는 중이다. 리퀴디티는 완전히 형식화된 함수 언어이며 오카멜(OCaml) 및 ReasonML의 구문을 사용하며, 미켈슨(Michelson)의 보안 사항을 엄격히 준수한다.
개요
테조스는 미켈슨이라는 로우 레벨 정적 유형 언어를 사용하여 스마트 컨트랙트를 작성할 수 있었다. 하지만 변수의 유형이 적고 스택 기반의 문법들 때문에 쓰는 것도 읽는 것도 어려워서 테조스는 개발 초기에 더 높은 레벨의 언어가 필요하다는 생각을 가졌다. 그 후 오카멜 프로(OCamlPro)에서 개발한 리퀴디티의 프로토타입이 2017년 6월에 처음 개발되었고, 2018년 2월 정식으로 테조스의 알파넷에서 출시되었다.[1]
특징
리퀴디티는 미켈슨의 타입 시스템을 따르지만, 오카멜의 문법을 바탕으로 실행된다. 리퀴디티는 미켈슨으로 변환되는 컴파일러가 포함되어 있으며, 미켈슨으로 쓰인 컨트랙트를 리퀴디티로 변환할 수 있는 디컴파일러 역시 포함되어 있다. 이는 서로의 호환성을 위함이다.[1] 또한 리퀴디티는 수학적으로 소프트웨어 코드의 오류를 점검하기에 오류가 일어날 확률이 사실상 없다.[2] 리퀴디티는 미켈슨에서 작성할 수 있는 모든 것을 표현할 수 있으며, 스택 조작 대신 로컬변숫값을 사용한다. 합계 유형 및 레코드 유형과 같은 유형은 리퀴디티에서 정의되고 사용될 수 있어 높은 수준의 프로그래밍 언어이고 재사용 가능한 코드와 라이브러리를 작성하는 모듈과 계약시스템, 다형성을 가진 강력한 메커니즘, 자바스크립트와 유사한 언어로 작성하기, 스마트 컨트랙트로 작성하여 응용하기 등 여러 가지를 리퀴디티로 표현하고 활용할 수 있다. 작성된 스마트 컨트랙트는 메인넷(Mainnet)과 제로넷(Zeronet)에 제출할 수 있다. 리퀴디티 파일의 확장자명은 .liq이다.
평가
함수형 프로그래밍 언어 중 하나인 리퀴디티는 수학적으로 소프트웨어 코드의 오류를 점검하기 때문에 오류가 일어날 확률은 0에 수렴한다. 그렇기 때문에 리퀴디티가 널리 사용되는 프로그래밍 언어는 아니지만 학습하는 데 오래 걸리지 않는 편에 속한다는 긍정적인 평가를 받고 있다.[2] 여타 함수형 프로그래밍 언어가 그렇듯이 리퀴디티 역시 계산 값을 수학 함수의 값으로 구하는 것으로 간주하고 상태 및 데이터의 변경을 방지한다는 장점이 있다.
향후 계획
테조스 한국 재단은 국내 개발자들의 테조스에 대한 이해를 높이고 활용도를 증가시키기 위해 프로그래밍 언어인 오카멜과 더불어 테조스 스마트 컨트랙트 언어인 리퀴디티의 교육과정을 제공할 계획을 가지고 있다. 이를 통해 한국 재단이 기대하는 점은 개발자를 비롯한 많은 사람이 테조스 블록체인 플랫폼을 더 쉽게 이해함과 분산 애플리케이션 개발의 용이함이다.[3] 한편, 개발자들은 현재 리퀴디티로 작성된 스마트 컨트랙트의 정확성(Correctness)을 증명하는데 사용할 공식 메서드(Formal-Method) 프레임워크를 개발 중이다.
리퀴디티 관련 홈페이지
각주
- ↑ 1.0 1.1 Skkrypto, 〈TezosXSkkrypto 테조스 실습노트 #6〉, 《브런치》, 2019-05-06
- ↑ 2.0 2.1 김병윤 기자, 〈테조스 창업자 “안전한 테조스, 금융업과 시너지 확신"〉, 《팍스넷뉴스》, 2019-01-28
- ↑ 임유경 기자, 〈테조스 한국 재단 설립...개발자 생태계 구축 집중〉, 《지디넷 코리아》, 2018-10-27
참고자료
- 리퀴디티 공식 홈페이지 - http://www.liquidity-lang.org/
- Skkrypto, 〈TezosXSkkrypto 테조스 실습노트 #6〉, 《브런치》, 2019-05-06
- 김병윤 기자, 〈테조스 창업자 “안전한 테조스, 금융업과 시너지 확신"〉, 《팍스넷뉴스》, 2019-01-28
- 임유경 기자, 〈테조스 한국 재단 설립...개발자 생태계 구축 집중〉, 《지디넷 코리아》, 2018-10-27
같이 보기
이 리퀴디티 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.
|
개발 : 프로그래밍 □■⊕, 소프트웨어, 데이터, 솔루션, 보안, 하드웨어, 컴퓨터, 사무자동화, 인터넷, 모바일, 사물인터넷, 게임, 메타버스, 디자인
|
|
프로그래밍 언어
|
ASP • C 언어 • C++ • C# • CSS • D 언어 • HTML • HTML5 • JSP • PHP • R • XHTML • XML • XSLT • 고(Go) • 고급언어 • 기계어 • 델파이 • 러스트 • 루비 • 루아 • 리액트 • 리퀴디티 • 무브 • 미켈슨 • 베이직 • 브이비스크립트 • 비주얼 C++ • 비주얼베이직(VB) • 비주얼베이직닷넷(VB.NET) • 솔리디티 • 스몰토크 • 스위프트 언어 • 스칼라 • 스크립트 언어 • 알골 • 어셈블리 • 언리얼스크립트 • 얼랭 • 에이잭스(Ajax) • 엠에프씨(MFC) • 오브젝티브-C • 오브젝트 파스칼 • 오카멜 • 웹어셈블리(WASM) • 이와즘(eWASM) • 자바 • 자바스크립트 • 저급언어 • 제이슨(JSON) • 제이쿼리(jQuery) • 카멜 • 코볼 • 코틀린 • 콜드퓨전 • 타입스크립트 • 파스칼 • 파워스크립트 • 파이썬 • 펄(Perl) • 포트란 • 프로씨(Pro-C) • 피엘에스큐엘(PL/SQL) • 피엘원(PL/I) • 하스켈
|
|
개발방법론
|
CBD 개발방법론 • EA • 구조적 개발방법론 • 객체지향 개발방법론 • 라이브러리 • 람다 아키텍처 • 모듈 • 모듈화 • 벤치마킹 • 소프트웨어 개발방법론 • 스크럼 • 스프린트 • 아키텍처 • 아키텍트 • 애자일 • 웹개발방법론 • 정보공학 개발방법론 • 컴포넌트 • 테일러링 • 템플릿 • 폭포수 모델 • 프로젝트 • 프로토타입 • 피드백
|
|
코딩
|
EUC-KR • UTF-8 • 값 • 글루웨어 • 노팔로우 링크 • 두팔로우 링크 • 디버깅 • 디코딩 • 마크업 • 버그 • 부트스트랩 • 세이브포인트 • 소스코드 • 시큐어코딩 • 아스키 • 액티브엑스 • 오픈소스 • 유니코드 • 인코딩 • 재컴파일 • 주석 • 컴파일 • 컴퓨터 프로그램 • 코드 • 코딩 • 태그 • 테스트 • 테이블 • 텍스트 • 파싱 • 퍼블리싱 • 퓨니코드 • 하드코딩 • 하이퍼링크 • 하이퍼텍스트
|
|
프로그래밍
|
C 명령어 • 객체 • 객체지향 • 객체지향 프로그래밍 • 거짓 • 관계연산자 • 기본형 변수 • 널 • 논리 • 논리연산 • 논리연산자 • 다중상속 • 다형성 • 대입 • 대입문 • 대입연산자 • 더블 • 도스 명령어 • 디폴트 • 레지스터변수 • 루프 • 리눅스 명령어 • 리턴 • 메모리 주소 • 메소드 • 멤버 • 명령문 • 명령어 • 무한루프 • 문자 • 문자열 • 바이트 • 반복문 • 배열 • 변수 • 분기 • 분기문 • 불린 • 브레이크 • 비교연산자 • 비트연산자 • 산술연산자 • 상속 • 상수 • 생성자 • 선언 • 선언문 • 설정자 • 속성 • 스위치 • 스태틱 • 시프트연산자 • 실행 • 실행문 • 어노테이션 • 에코 • 역참조 • 연산 • 연산문 • 연산자 • 오버로딩 • 오버라이딩 • 외부변수 • 윈도우 명령어 • 유닉스 명령어 • 인스턴스 • 인스트럭션 • 인클루드 • 인터페이스 • 임포트 • 입력 • 입력문 • 입출력 • 입출력문 • 자료형(데이터 타입) • 자바 명령어 • 자바 예약어 • 자바 컬렉션 • 전역변수 • 접근자 • 접근제어자 • 정보은닉 • 정수형 • 정적변수 • 제어 • 제어문 • 제어자 • 조건 • 조건문 • 조건연산자 • 주소 • 증감연산자 • 지역변수 • 참 • 참조 • 참조변수 • 초기화 • 추상메소드 • 추상클래스 • 추상화 • 출력 • 출력문 • 캡슐화 • 케이스 • 클래스 • 파라미터(매개변수) • 파이널 • 패키지 • 퍼블릭 • 포인터 • 프라이빗 • 프로텍티드 • 필드(멤버변수) • 함수 • 환경변수
|
|
명령어
|
abstract • array • boolean • break • byte • case • char • continue • default • double • do while • echo • elif • else • else if • false • final • float • for • gosub • goto • if • if else • import • include • int • join • long • long long • null • print • printf • println • private • protected • public • return • scanf • short • stdio.h • static • string • switch • temp • then • true • unsigned • void • while
|
|
디자인패턴
|
구조패턴 • 동시성패턴 • 동시실행패턴 • 모델-뷰-컨트롤러 패턴 • 상태패턴 • 생성패턴 • 싱글톤패턴 • 아키텍처패턴 • 전략패턴 • 커맨드패턴 • 행동패턴
|
|
프로그래밍 인물
|
귀도 반 로썸 • 그레이스 머레이 호퍼 • 니클라우스 비르트 • 댄 브릭클린 • 더그 커팅 • 데니스 리치 • 리누스 토르발스 • 리처드 그린블라트 • 마거릿 해밀턴 • 마크 앤드리슨 • 빈트 서프 • 빌 게이츠 • 빌 조이 • 스티브 잡스 • 에이다 러브레이스 • 제임스 고슬링 • 척 벤턴 • 켄 톰슨 • 팀 패터슨
|
|
위키 : 자동차, 교통, 지역, 지도, 산업, 기업, 단체, 업무, 생활, 쇼핑, 블록체인, 암호화폐, 인공지능, 개발, 인물, 행사, 일반
|
|