"Simplicity is a blockchain programming language that is so simple, it fits on a t-shirt."
-- Dr. Russel O'Connor, Infrastructure Tech Developer @ Blockstream
Blockstream의 Russell O'Connor 박사는 오늘 보안용 프로그래밍 언어 및 분석(Programming Languages and Analysis for Security)에 관한 ACM SIGSAC 워크샵인 PLAS 2017에서 새로운 언어 및 도구에 대한 세션의 일환으로 "Simplicity: A New Language for Blockchains"에 관한 자신의 논문을 발표할 것입니다. 기존의 암호화폐 언어를 개선하기 위해 개발된 프로그래밍 언어인 Simplicity는 비트코인 UTXO 모델을 기반으로 기존 언어의 단점을 보완하고 블록체인 상 스마트 계약의 새로운 길을 열어줍니다.
비트코인 스크립트의 업데이트된 접근 방식이자 연속 미적분학을 기반으로 하는 Simplicity 언어는 몇 가지 주요 개선 기능을 제공하는데, 그 중 첫 번째는 스크립팅 기능을 완성하고 확장하는 것입니다. 비트코인의 자체 프로그래밍 언어인 비트코인 스크립트의 현재 버전이 가진 한계 중 하나는 비트코인의 초기에 많은 opcode가 비활성화되었다는 것입니다. 예를 들어, 두 문자열을 연결하는 OP_CAT opcode가 비활성화되었습니다. Blockstream의 Elements 플랫폼이 일부 opcode를 재활성화하고 추가하긴 하지만, O'Connor 박사는 보다 유연한 해결책을 원했습니다. Simplicity는 완벽한 표현성을 제공합니다.
또한, Simplicity는 보다 안전합니다. 이러한 장점은 형식 안전성(type-safety)으로 시작됩니다. Simplicity는 콤비네이터를 활용하는 형식화된 기능적 프로그래밍 언어입니다. 분석 가능성에서 비롯되는 안전성도 있습니다. Simplicity는 모든 유한 계산의 프로그래밍을 가능케 하고 강력한 스마트 계약 시스템에 필요한 모든 기능을 제공하는 등 어느 정도 완벽하지만, 튜링이 불완전하여 무한 루프는 불가능하고 정적 분석은 가능합니다. 마지막으로, 형식 의미론은 Coq Proof Assistant에서 Simplicity에 대한 추론을 지원함으로써 O'Connor 박사가 Simplicity로 작성된 SHA-256 해시 함수의 구현을 형식적으로 검증한 것과 같이 형식 검증의 안전성을 제공합니다.
Simplicity는 MASTs(Merklized Abstract Syntax Trees)를 통합함으로써 기존 암호화폐 언어를 더욱 개선합니다. 네이티브 MAST 프로그래밍 언어인 Simplicity는 프로그램을 트리로 정렬한 뒤 회수(redemption)에 필요한 부분만 공개합니다. 프로그램에서 사용되지 않은 부분은 제거되어 기밀성은 높아지고 블록 요구 공간은 줄어듭니다.
Simplicity에 관한 O'Connor 박사의 논문은 이 새로운 암호화폐 언어에 대한 설명을 처음으로 제공합니다. Simplicity는 향후 Blockstream의 상품에 사용될 잠재성이 있는 Blockstream Research & Development 프로젝트입니다. 다음 단계로는 Simplicity SDK가 출시될 것입니다. 그 때까지 이러한 미래의 가능성에 대해 더 자세히 알고 싶으시면 Simplicity 언어의 작동 방식을 상세히 설명하는 “Simplicity: A New Language for Blockchains”를 참고 바랍니다.