편집자 주: 이 기사의 출처는 편집자 주: 이 기사의 출처는Ambi 연구소 SECBIT
(ID: SECBIT), 저자: Guo Yu, SECBIT Lab 설립자, 허가를 받아 공개.
블록체인 분야에서 전통적인 방법을 적용한 솔루션 중 어느 것도 이길 수 없으며 혁신만이 미래를 가질 것입니다.
——구오 유
저는 오늘날 저와 같은 모든 사람들이 Facebook의 친구 서클에 의해 최대한 활용되었다고 믿습니다.
Facebook이 시작한 암호화된 디지털 통화 프로젝트인 Libra가 오늘(6월 18일) 공식적으로 데뷔했습니다. Libra는 다국어 공식 웹사이트와 백서를 동시에 공개하여 수십억 인구를 위한 글로벌 통화 및 금융 서비스 인프라로 자리매김했습니다. Libra는 또한 새로 개발된 프로그래밍 언어 Move 및 합의 프로토콜 LibraBFT에 대해 자세히 설명하는 여러 기술 백서를 발표했습니다. Libra 소스 코드는 GitHub에서 오픈 소스로 제공되었으며 테스트 네트워크도 시작되었습니다. 현재 허가형 체인(컨소시엄 체인)으로 설계되어 수십억 명의 요구를 지원할 수 있는 현재의 비허가형 체인(퍼블릭 체인)에 대한 성숙한 솔루션이 없다고 주장하며 비허가형 체인으로의 전환을 나타냅니다. 체인은 릴리스 작업 후 5년 이내에 시작됩니다.
Libra의 릴리스 시리즈 중 새로운 프로그래밍 언어인 Move가 특히 눈길을 끕니다. Move의 백서를 처음 읽었는데, 글쎄요, 아마도 이것이 미래의 스마트 컨트랙트 언어가 되어야 할 모습일 것입니다.
Their design goals seem to overlap, or even aim to replace Ethereum? 베를린의 개발자인 Lefteris Karapetsas는 소셜 플랫폼에 대한 자신의 견해를 제시했습니다.
I think "move" programming language released by $FB could be more interesting than libra. PuzzleToLife.com의 설립자인 CryptoPuzzleDream에 따르면:
I'm usually pretty skeptical of anything related to cryptocurrency, but here's one piece of Libra that looks potentially interesting: a bytecode programming language called Move with semantics inspired by linear logic. 표준 전문가인 James Clark은 다음과 같이 말했습니다.
Move는 "디지털 자산"을 위한 스마트 계약 플랫폼 언어입니다.
보조 제목
Move 언어의 세 가지 유용한 용도
디지털 통화, 토큰 및 디지털 자산 발행
보조 제목
상향식 정적 유형 시스템
상향식 정적 유형 시스템
Well-typed programs never get stuck.
이는 프로그래밍 언어(PL) 세계의 속어입니다. 유형이 올바른 코드는 절대 사라지지 않습니다. 즉, 계약 코드의 일부가 유형 검사되면 신뢰성이 상당히 높아집니다.
보조 제목
일류 자원 철학
일류 자원 철학
일류 자원이라는 단어는 상당히 학술적입니다.중국어 번역에서 자원은 일류 시민입니다.이것은 무엇을 의미합니까?
소위 프로그래밍 언어의 일급 시민은 프로그래밍 언어가 프로그래밍할 때 가장 먼저 고려하는 프로그래밍 객체입니다.
자원, 자원이란 무엇입니까? 아주 학구적인 이름이기도 합니다. 리소스는 Value에 해당하는 개념입니다. 값은 마음대로 복사할 수 있지만 리소스는 복사할 수 없고 소비만 할 수 있습니다. 자원은 콜라와 같아서 한 병을 마시면 한 병을 잃어버리고, 가치는 공책에 적힌 영어 단어와 같아서 매일 아침 읽을 수 있고, 읽고 나면 사라지지 않고, 기억하고 있으면, 그런 다음 내 머리 속에 복사를 만들었습니다. 당신이 읽을 수 있을 뿐만 아니라 나도 읽을 수 있고 당신도 읽을 수 있고 나도 읽을 수 있다.
이더리움 스마트 컨트랙트 언어를 포함한 전통적인 프로그래밍 언어는 디지털 자산의 부기를 위해 Value 방법을 채택하므로 부기에서 실수를 할 수 있다는 문제가 발생합니다. 실제로 장산이 이시에게 돈을 송금할 때 이시의 계좌에는 10위안이 추가로 남아 있지만 장산의 계좌 잔고에는 변화가 없었다. 지난 2년 동안의 다양한 부기 허점으로 인해 모두가 스마트 계약의 미래에 대한 자신감을 잃게 되었습니다.
Move 계약은 리소스 유형이라고 하는 "선형 논리"의 전통적인 이론을 흡수하는 유형을 채택합니다. 디지털 자산은 "리소스 유형"으로 정의할 수 있습니다. 이러한 방식으로 리소스와 같은 디지털 자산은 선형 논리의 일부 특성을 충족합니다.
디지털 자산은 복사할 수 없습니다.
디지털 자산은 허공에서 사라질 수 없습니다
First-class Resources의 진정한 의미는 디지털 자산이 First-Class Citizen이라는 것인데, 이 문장은 Move가 디지털 자산을 운용하기 위한 스마트 컨트랙트 언어라는 사실로 확장될 수 있습니다. 기술적인 관점에서 디지털 자산은 계약 변수로 사용될 수 있고, 디지털 자산은 저장, 값 할당, 기능/절차의 매개 변수로 사용되거나 기능/절차의 반환 값으로 사용될 수 있습니다. 그리고 Move의 정적 타입 시스템은 스마트 컨트랙트 코드가 컴파일 중, 즉 배포 전에 컴파일러를 통해 대부분의 리소스 사용 오류를 확인할 수 있도록 합니다. 보장된 스마트 계약은 더 이상 예전처럼 취약하지 않습니다.
일급 리소스는 프로그래머가 안전한 디지털 자산을 구현하는 것뿐만 아니라 자산을 래핑하고 액세스 제어 정책을 시행하기 위한 올바른 비즈니스 논리를 작성하는 데 사용할 수 있는 매우 일반적인 개념입니다. 이를 사용하여 안전한 디지털 자산을 구현할 뿐만 아니라 올바른 비즈니스 논리를 작성하고 올바른 액세스 제어 정책을 구현합니다.
보조 제목
계약 보안 설계
Move 계약은 보안을 충분히 고려하여 설계되었습니다. 우선 Move는 동적 할당(Dynamic Dispatch)을 지원하지 않습니다. 좋아요, Dynamic Dispatch가 무엇인지 설명하겠습니다. 평신도의 관점에서 이것은 매우 유연한 언어 메커니즘입니다. 많은 함수, 프로시저 또는 서브루틴을 프로그램에 작성할 수 있습니다. 그런 다음 주 프로그램은 이러한 기능/프로시저/서브루틴을 호출하여 각각 다른 기능을 완료할 수 있습니다. 프로그램이 실행 중이면 호출하는 함수를 알 수 있거나 특정 순서로 많은 함수를 호출할 수 있으며 실행하기 전에 특정 단계의 함수 호출을 모르는 경우 이러한 함수 호출은 "정적"입니다. 어떤 함수 이 호출되면 프로그램이 실행될 때까지 관찰을 통해서만 알 수 있으며 이 함수 호출을 "동적"이라고 합니다. "동적"은 "정적"보다 분명히 더 유연합니다.
그러나 유연하다는 것은 문제에 더 취약하다는 것을 의미하기도 합니다. 많은 최신 프로그래밍 언어는 객체 지향 언어에서 "상속"으로 인한 "동적 바인딩"과 같이 언어 수준에서 직접 지원하는 동적 할당을 다소 지원합니다. 동적 기능은 프로그램 추론에 도움이 되지 않으며, 공식적인 검증(Formal validation)에는 더욱 도움이 되지 않으며 보안 문제를 일으킬 가능성이 더 큽니다. 이더리움 스마트 계약 설계에는 기능 포인터를 매개변수로, 계약을 매개변수로, 대리자 호출 등을 지원하는 것과 같은 많은 "동적 기능"이 있습니다. Move 언어에서는 어떤 형태의 "동적 할당" 또는 "동적 기능"을 지원하지 않습니다. 모든 계약 실행 경로는 컴파일 시간에 결정될 수 있으며 완전히 분석 및 검증될 수 있습니다.
Move 계약이 실행되기 전에 다양한 유형의 오류를 확인할 수 있는 바이트코드 검증기(Bytecode verifier)에 의해 검증됩니다. 동시에 바이트코드가 해석되고 실행될 때 여전히 유형을 전달하며 실행 중에 확인됩니다.
이더리움 EVM 플랫폼과 비교할 때 Move 모듈 시스템은 순환 재귀 종속성을 지원하지 않으므로 계약 재진입 취약성(Re-entrancy)을 완벽하게 해결합니다.
보조 제목
강력한 모듈 시스템
Move modules are similar to smart contracts in other blockchain languages. …, However, modules enforce strong data abstraction — a type is transparent inside its declaring module and opaque outside of it.
Move 모듈 시스템은 백서에 따라 기능적 프로그래밍 언어(OCaml, Coq, SML) 스타일로 설계되었습니다.
Move의 모듈 시스템은 스마트 계약의 정식 검증을 위한 매우 좋은 기반을 제공하며 모듈 내부에 "불변량"을 정의할 수 있습니다. 소위 불변량은 디지털 자산의 내부 상태에 대한 엄격한 제약을 의미하며 형식 검증 자동화에 매우 유용한 정보를 제공할 수 있습니다. 또한 모듈 시스템의 "불투명한 추상화"는 공식 검증 작업을 모듈식으로 만들고 비용을 낮출 수 있습니다. Move 모듈 시스템에서 프로그램 분석기 및 기호 실행기를 작성하는 것이 훨씬 더 간단할 것입니다. 추상화 후 계약 논리가 매우 간단하고 쉽게 추론될 수 있기 때문입니다.
텍스트
미래 보장 이동 스마트 계약
무브가 다소 거칠고 미숙해 보이지만 이 방향은 여전히 흥미롭고, 무브 언어 수준에서 거대한 디지털 자산 플랫폼이 되려는 페이스북의 야망을 엿볼 수 있다. 이 역할은 Ethereum에 속해야 합니다.
내가 무브에 반한 이유를 조금 생각해보면 아마 세 가지 이유가 있을 것이다.
PL(프로그래밍 언어) 분야의 연구 성과를 흡수했으며 EVM 스마트 계약 언어의 경험과 교훈도 흡수했습니다.
디자인은 "스마트 계약 보안 및 정확성"을 매우 중요하게 생각합니다.
