Clarity 언어 이해하기
스택스 생태계의 Web3.0 개발자인 codex.btc님의 트위터 스레드를 통해 저같은 문돌이 일반인 레벨로 Clarity 언어를 소개해보는 시간을 갖도록 하겠습니다.
트위터링크: https://twitter.com/codexbtc/status/1446405684828901388?s=20
스레드리더앱으로 보기: https://threadreaderapp.com/thread/1446405684828901388.html
codex.btc님은 본 트위터포스팅을 통해, Clarity의 설계와 다른 스마트컨트랙트 언어와 차별되는 포인트를 설명합니다.
Clarity는 스택스 에코시스템의 일부로 히로시스템즈와 알고란드가 공동으로 개발하였습니다 . “예측 가능성(predictability)”과 “보안(security)”을 최적화하는 것에 중점을 두었으며, 이는 결정가능성, 해석가능성, 예측가능성을 그 특징으로 합니다. FT와 NFT가 내장되어 있으며, 소각체인(burn chain)에 접근할 수 있습니다.
Clarity는 프로그래밍 언어와 같은 Lisp*이며 구문은 여러분이 알고 있는 모든 언어와 완전히 다릅니다. Lisp 프로그램은 각각이 값을 반환하는 표현식의 트리입니다. 연산자는 없고 기능만 있습니다. 그러면 더 일관성 있고 더 쉽게 구문 분석할 수 있습니다.
*Lisp언어 위키백과 참고: https://ko.wikipedia.org/wiki/%EB%A6%AC%EC%8A%A4%ED%94%84
Clairty는 decidable (결정 가능) 합니다. 무슨 뜻인지 이해하기 위해선 먼저 Turing Completeness가 무엇인지 알아야 합니다.
Turing Complete 언어는 모든 연산 문제를 해결할 수 있습니다. 가령 어떤 이유로 언어가 어떤 식으로든 덧셈 연산을 수행할 수 없다고 상상해 보십시오. 그것은 비 Turing Complete 언어를 만듭니다. 오늘날 대부분의 프로그래밍 언어는 Turing Complete입니다.
Clarity는 의도적으로 Turing Complete가 되지 않도록 설계되었습니다. 간단하게, 이 세상에는 수행할 수 없는 작업도 있습니다. 예를 들어, Clarity에서는 for 루프를 수행할 수 없습니다. 또한 재귀를 수행할 수 없습니다.
그것의 이점은 “튜링 복잡성”을 피할 수 있다는 점입니다. Clarity에서는 무한 루프(infinite loop)와 재귀(recursion)가 없습니다. 실행되는 모든 실행 라인에 실제 비용이 소요될 때 그 누구도 무한 루프에 빠지기를 원하지 않습니다.
Clarity에서 루프 작업을 수행하려면 고정 길이 목록에서 작동하는 맵/리듀스 작업을 사용할 수 있습니다. 그리고 Clarity의 목록은 가변 길이를 가질 수 없습니다(함수 입력 제외). 목록을 추가하거나 결합할 수도 없습니다.
결정 가능성(Decidability)은 코드베이스가 복잡해지면 발생할 수 있는 모든 종류의 의도치않은 버그와 문제를 제거합니다.
Clarity는 해석된 언어(interpreted language)입니다. 즉, 코드가 바이트 코드 또는 중간(EVM 바이트 코드가 있는 Solidity와 달리)으로 컴파일되지 않습니다. 계약 코드는 블록체인에 직접 게시되며 언제든지 읽을 수 있습니다.
이는 특히 코드에서 많은 양의 자본을 잠그거나 이전해야 할 때 큰 이점입니다. 이더리움의 경우 공개되지 않는 한 계약의 99% 소스 코드를 읽을 수 없습니다. 결국, 조건을 읽지 않고 계약에 서명하고 싶은 사람이 어딨을까요?
Clarity는 재진입(reentrancy)을 허용하지 않습니다. 계약 A가 계약 B를 호출한 다음 B가 계약 A를 다시 호출한다고 상상해 보십시오. 이렇게 하면 계약이 상태를 업데이트하기 이전에 공격자가 여러 토큰 인출을 호출하고 지갑을 털어갈 수 있습니다. Clarity는 이것을 허용하지 않습니다.
Clarity에서는 대체 가능 (Fungible Token)및 대체 불가능 토큰(Non-Fungible Token)이 즉시 지원됩니다. 대차 대조표를 만들고 공급을 관리하고 토큰 오퍼레이션을 수행하는 기능이 내장되어 있습니다.
Clarity는 베이스 체인에 액세스할 수 있습니다. 스택스가 비트코인에서 결제되기 때문에, 이는 유저가 계약을 행함에 있어서, 비트코인 체인에 직접 액세스 할 수 있습니다. 이는 비트코인에 직접 반응하는 스마트 계약을 구축할 수 있는 훌륭한 기능입니다.
한 예는 카타마란스왑인데, 카타마란을 통해 유저는 스택스기반의 디지털 자산과 네이티브 비트코인을 스왑하고 거래할 수 있습니다.