러크 프로그래밍 언어(Lurk programming language) 저장소가 대중에게 공개됐다. 러크는 스나크(SNARK) 증명, 블록체인 합의, 파일코인 가상 머신(FVM: 파일코인 Virtual Machine), 분산 애플리케이션, IPFS 및 IPLD와의 데이터 통합 등을 위한 새로운 가능성을 가능하게 하는 순환 zk-SNAARK(영지식 간결한 비인터랙티브 지식 인수)를 위한 튜링 완료 프로그래밍 언어다.
개요
러크는 스킴(scheme)과 커먼 리스프(Common Lisp)의 영향을 받은 리스프의 정적 범위 방언이다. 대부분의 프로그래밍 언어에 비해 러크 프로그램의 특징은 zk-SNARK를 사용하여 해당 프로그램이 올바르게 실행하는지를 증명할 수 있는 것이다. 결과 증명은 상대적으로 작고, 빠르게 검증할 수 있으며, 증명해야 할 진술에 명시적으로 포함된 정보만 공개한다.
간단히 말해서, 러크는 프로그램 개발을 훨씬 더 간단하게 만드는 접근 가능한 언어이다. 이는 작성할 수 있는 프로그램은 기존 SNARK 프로그램보다 '강력'하고 해당 프로그램을 작성하는 것이 도메인 전문가가 아닌 사람들에게도 가능해지기 때문에 SNARK 프로그래밍에 더 쉽게 액세스할 수 있다.
러크는 파일코인 증명을 구현하기 위해 수행된 작업의 확장으로 프로토콜 랩의 수석 연구 엔지니어 치움드 쿤장(Chhi'mdd Künzang)에 의해 개발되었다. 파일코인은 증명 구조에서 지식을 증명하기 위해 효율적이고 암호적으로 안전한 메커니즘인 스나크를 사용한다. 'ZK'(Zero Knowledge)는 파일코인 SNARKs의 필수 부분은 아니지만, 검증자가 어떠한 정보를 공개하지 않고 증명을 생성할 수 있음을 의미한다. 파일코인은 네트워크가 의존하는 핵심 암호화 프로토콜인 복제 증명(PoRep: Proof of Replication)과 공간 증명(Post: Proof of Space-time)에 모두 스나크를 사용한다. (이러한 개념에 대한 소개는 이 프로토스쿨 튜토리얼을 참고하면 된다.) 파일코인 Proofs의 요구는 이전 세대의 스나크를 한계까지 확장하는 동시에 다음 세대의 가능성을 모색, 인식 및 발견하도록 준비해야 했다.
러크를 입력합니다.
대부분의 zk-SNAARK 저작 언어와는 달리, 러크는 튜링 완성형이기 때문에 임의의 계산 클레임을 만들고 증명할 수 있다(리소스 제한에 따름). 러크는 리스프이기 때문에 코드는 단순히 러크 데이터이며, 어떠한 러크 데이터도 러크 프로그램으로 직접 평가할 수 있다. 러크는 스나크에 친숙한 포세이돈 해시(넵튠 제공)를 사용하여 복합 데이터를 구성하므로 데이터는 자연스럽게 내용 주소 지정이 가능하다.
러크는 현재 여러 백엔드 검증 시스템, 특히 스나크 팩(SnarkPack)+와 노바(Nova)가 포함된 그로트16을 지원하며 다음과 같은 주요 기능 또한 지원한다.
- 검증할 수 있는 계산
- 간결한 증명
- 제로 지식
- 튜링 완전성
- 콘텐츠 주소 지정 가능 데이터의 임의 순회
- 고차 함수(예: 증명이 있는 계산에 대한 공개 입력으로서의 함수)
- IPFS 및 IPLD와의 자연스러운 통합을 위한 컨텐츠 주소 지정 데이터
러크 앤드 파일코인
러크는 다양한 방법으로 파일코인 프로토콜의 개발을 지원할 수 있다. 예를 들어 파일코인 가상 머신(FVM: Filecoin Virtual Machine)과의 러크 통합은 파일코인 블록체인의 러크 프로그램과 애플리케이션을 검증할 수 있다. 이를 통해 파일코인 스마트 계약(또는 행위자)은 애플리케이션별 영지식 증명랑 수 있는 한 계산에 대한 일급 네이티브 액세스를 제공할 수 있다. 파일코인 행위자는 파일코인 네트워크에 저장된 데이터를 통해 장기 실행 러크 작업을 중개, 조정 및 장려하는 데 사용할 수 있습니다. 또한 파일코인 섹터, 개인 저장소 또는 체인 자체를 포함한 여러 소스의 공개 및 개인 데이터를 결합하는 증거를 허용합니다.
러크는 더 긴 기간에 걸쳐 파일코인의 계층적 합의를 개선할 수 있다. 계층적 합의는 블록체인 네트워크를 수평적으로 확장해 처리량과 유연성을 높이는 프레임워크다. 계층적 합의에서, 사용자들의 하위 집합은 시스템의 다른 서브넷과 원활하게 상호 작용할 수 있는 기능을 유지하면서 독립적인 상태와 합의 알고리즘을 가진 새로운 서브넷을 생성할 수 있다. 서브넷은 서브넷 상태의 증명을 주기적으로 부모에게 커밋하여 부모 체인(Parent chain)의 보안을 활용한다. 이는 최신 글로벌 합의가 보장되고 계층 구조의 다른 서브넷으로 메시지가 전파된다. 현재 계층적 합의의 현재 구현에서, 서브넷 증명을 확인하려면 해당 서브넷의 상태에 대한 전체 액세스 권한이 필요하다. 러크는 서브넷에서 수행된 상태 변화에 대한 자체 검증할 수 있는 증명을 구축함으로써 이러한 의존성을 완전히 제거할 수 있었으며, 이는 시스템의 확장성과 유연성을 향상할 것이다.
러크 생태계의 다른 주요 관계자
러크 생태계에는 프로토콜 랩스와 파일코인 재단이 지원하는 연구진과 개발팀이 포함된다.
하버드 SEAS의 컴퓨터 과학 조교수인 나다 아민(Nada Amin)은 러크의 리스프 구현을 사용할 수 있는 부트스트랩 프로그래밍 시스템으로 바꾸는 작업을 하고 있다. 그녀는 러크에 대해 "순환적인 영 지식 증명을 위해 리스프를 구현하는 범용 회로를 만드는 프로젝트가 zk-SNAKR에 적합하고 zk-SNAK를 민주화할 수 있는 가능성을 가진 리스프의 우아한 매핑이기 때문에, 이 프로젝트가 흥미롭다."라고 말했다.
파일코인 재단이 러크와의 통합을 지원하는 개발 중인 프로그래밍 언어 글로우(Glow)의 연구원 및 개발자들은 분산형 앱(DApp) 구축을 위한 간단한 도메인별 언어를 개발하고 있다. "보통 글로우 코드는 오프체인(즉, DApp 사용자에 의해) 실행되며, 일부는 온체인(즉, 공유된 합의에 따라) 실행된다"고 글로우 개발회사인 상호지식시스템즈(Mutual Knowledge Systems)의 사장인 프랑수아 르네 리도(François-René Rideau)가 설명했다. “글로우 코드를 러크로 컴파일함으로써 우리는 오프체인 증명을 구축하고 검증에만 합의를 사용할 수 있으므로 가스 요금을 낮추고 개인 정보를 보호하며 글로우로 작성된 DApp의 보안 및 확장성을 개선할 수 있다.”
또한 파일코인 재단의 자금 지원을 받는 야티마(Yatima)는 하위 구조형, 메타프로그래밍 및 IPFS를 통한 콘텐츠 어드레싱을 특징으로 하는 러스트(Rust)에서 구현된 종속 유형 기능 프로그래밍 언어 및 정리 증명자이다. 야티마의 AST는 IPLD 형식을 사용하여 인코딩되며, 야티마 프로그램은 IPFS 네트워크를 통해 쉽게 공유되고 파일코인에 저장되며 웹을 포함한 모든 WASM 플랫폼에서 그리고 블록체인 런타임에서 결정적으로 평가할 수 있다.
야티마는 임의의 컴파일 시간 계산에 대한 영지식 검증을 허용하기 위해 러크와 협력하고 있다. 형식적인 증명은 표현력이 있지만 검증하는 데 비용이 많이 들 수 있다. 이러한 형식 증명의 검증자를 러크, 따라서 zk-SNARK로 컴파일함으로 써 야티마는 형식 증명의 일정한 시간 및 공간 검증을 가능하게 할 수 있다.
재능 있는 연구원 및 엔지니어 팀과 성장하는 기여자 생태계를 통해 러크의 미래가 기대된다.
향후 추가 정보
앞으로 몇 달에 걸쳐, 러크 웹사이트와 블로그를 공개할 예정이다. 이 웹사이트는 러크의 기술적 특징과 역사적 배경에 대해 더 깊이 알아볼 것이다. 이러한 최신 정보를 확인하려면 트위터에서 @Filecoin 및 @Proto Research를 팔로우면 된다.
자세한 내용은 깃허브(GitHub)에 있는 러크 리포짓(reposit)을 참고하면 된다.
더욱 다양한 정보 및 방송 관련 소식은
공식 SNS 채널을 통해 확인 가능합니다.