7/14 요약 Sui AMA: Move 미스텐 개발팀과 함께하는 프로그래밍 언어

미스텐 랩스 개발팀이 Move 프로그래밍 언어에 대한 이번 AMA에 참여했습니다.

7/14 요약 Sui AMA: Move 미스텐 개발팀과 함께하는 프로그래밍 언어

Jen:

여러분을 환영합니다. 오늘 AMA가 정말 기대됩니다! 사랑스러운 Mysten Move 프로그래밍 팀을 소개하게 되어 기쁩니다.

Adam:

안녕하세요, 저는 팀의 주니어 멤버입니다. 지난 1월에 미스텐 랩스에 입사했습니다.

저는 일반적으로 프로그래밍 언어를 구현하고 최적화하는 데 상당한 경험이 있습니다. 저는 Move 용 VS Code 플러그인을 개선하는 작업을 꽤 합리적으로 수행했으며, 이제 더 많은 기능을 추가하여 사랑스러운 개발자들이 좀 더 편리하게 프로그래밍 도구를 사용할 수 있게 되었습니다.

Damir:

저는 Move 책의 저자이자 오늘부터 Move Syntax 패키지의 저자이기도 한 Damir입니다. 저는 제 의지와는 상관없이 Move 에 들어가게 되었는데, CTO가 이 언어를 사용할 것이라고 말했기 때문입니다. 그래서 배웠고, 당연히 사랑에 빠졌죠. 그게 3년 전인 2019년이었고 저는 여전히 여기에 있습니다.

엠마

제 이름은 엠마입니다. 제가 Move 에서 처음 일을 시작한 것은 2019년에 Move 팀과 Facebook에서 인턴으로 일할 때였습니다. 그 이후로 Move 풀타임으로 일하고 있습니다. 또한 Diem 프레임워크에서 Move 코드의 많은 부분을 지정하고 검증했습니다. 지금은 Sui 에서 Move 을 개선하기 위해 Move 을 적용하는 작업을 계속하고 있습니다. Move 프로그래밍 언어에서 가장 마음에 드는 점은 소스 코드 수준이 아닌 바이트코드 수준에서 안전성을 강화하는 방식입니다. 이는 또 다른 보호 계층을 추가하는 데 정말 도움이 된다고 생각합니다.

Todd:

안녕하세요, 저는 2018년부터 Move 프로젝트에 참여하고 있는 Todd입니다. 저는 프로젝트의 세 번째 또는 네 번째 사람이었습니다. 최근에는 미스텐에서 통합 작업을 하고 있습니다. 재미있는 사실을 하나 알려드리자면 Move 원래는 클래스가 있는 객체 지향 언어였지만, 저희는 그 모듈을 제거했습니다. 객체로 돌아갔다는 사실이 항상 재미있어요. 하지만 현재 저희의 객체는 Move 의 첫 번째 버전과는 매우 다릅니다.

Sam:

저는 Sam입니다. 저는 Move 의 창시자이며 2018년 봄부터 이 언어에 대한 작업을 해왔습니다. Move 에서 디자인 및 구현 형식화를 주도하고, 증명자와 분석에 관한 연구 논문을 읽고, 언어를 크로스 플랫폼으로 만드는 것을 검토하는 등 다양한 영역에서 일했습니다. 재미있는 사실은 프로토타입의 원래 이름은 튤립이었지만, Diem 경영진이 현명하게도 이 이름을 거부했다는 것입니다.

. . .

질문 #1: Move 언어는 다른 프로그래밍 언어와 어떻게 다르며 고유한 특징은 무엇인가요?

엠마

우리 언어는 검증 가능성을 염두에 두고 만들어졌습니다. 이 점이 다른 언어와 차별화되는 점이라고 생각하는데, 일반적으로 언어가 먼저 존재하고 나중에 대중화되면 사람들이 공식적으로 검증하기 시작합니다.

Adam:

Move 의 독특한 점은 솔리디티가 아닌 다른 스마트 컨트랙트 언어의 세계에서 흥미로운 것들을 가져온다는 점입니다. 또한 더 전통적인 프로그래밍 언어에서 매우 흥미로운 개념을 가져옵니다. 예를 들어, Move 에서 자산을 인코딩하는 방식은 제가 아는 한 전통적으로 해왔던 방식과 다릅니다. Move 에서 생성할 때마다 기본적으로 수정할 수 있는 모든 풍부한 속성이 포함된 NFT가 생성됩니다. Move 은 코드를 쉽게 공유할 수 있다는 개념을 중심으로 설계되었기 때문에 이러한 패키지 및 모듈 개념을 통합했습니다. 이를 통해 소스 코드를 작성하고 게시하면 사람들이 체인에 표시되는 내용을 어느 정도 알 수 있지만 복사하여 붙여넣을 필요가 없습니다. 이러한 개념은 언어가 충분히 표현력이 있으면서도 버그를 찾고 도구를 작성하는 데 도움이 될 만큼 간결해야 한다는 개념과도 일맥상통합니다.

Damir:

표현력은 이 언어의 가장 큰 특징 중 하나이며 정말 뛰어난 점입니다. 코드를 많이 작성할 필요 없이 모듈 애플리케이션의 비즈니스 로직으로 바로 들어가면 모든 것을 얻을 수 있다는 것은 정말 놀라운 일입니다.

. . .

질문 #2: 새로운 프로그래밍 언어를 개발하는 대신 Rust를 사용하면 안 되는 이유는 무엇인가요? 그리고 왜 업계가 대의를 위해 표준에 합의하지 못할까요?

Sam:

이 질문에 대한 짧은 대답은 저희는 노력했다는 것입니다. 훌륭한 개발자들과 함께 Rust를 훌륭한 도구와 에코시스템으로 사용할 수 있다면 정말 좋을 것입니다. 하지만 Rust는 소스 언어이며, 이러한 블록체인 플랫폼에서 블록체인에서 실행되는 것은 소스 코드가 아니라 바이트 코드입니다.

  • 체인에 코드를 게시하려고 할 때마다 Rust 컴파일러를 실행할 수 없습니다. 크고 비싼 소프트웨어이며 실행하는 데 시간이 오래 걸립니다.
  • 일부 공격자는 머신 코드를 블록체인에 직접 게시할 수 있으며, 이는 소스 언어가 제공하는 보장이 없고 코드에 악의적인 행위를 할 수 있기 때문입니다.

저희는 Rust에서 많은 영감을 받았습니다. 처음에는 Rust를 사용하려고 생각했지만 실행 파일 형식에 대한 제약 때문에 그렇게 할 수 없다는 것을 깨달았습니다. 그 외에도 언어가 본질적으로 애플리케이션에 따라 달라지는 다양한 요소가 있습니다. 그렇지 않으면 모든 것을 할 수 있는 하나의 프로그래밍 언어만 남게 됩니다. Move 좋은 아이디어를 많이 가져와서 우리만의 스마트 컨트랙트를 적용하는 것입니다.

질문의 두 번째 부분에 답하기 위해 저희는 Move 을 설계할 때 블록체인 구현 세부 사항을 과도하게 포함하지 않도록 했습니다. 계정이나 거래 또는 암호화 보조금 같은 것은 알지 못합니다. Move 을 사용하는 5개의 서로 다른 블록체인이 있으며, 거래 설정 방식, 저장 방식, 계정 구조, 합의 작동 방식 등 내부적으로 모두 상당히 다른 모습을 보입니다.

Adam:

블록체인에서 기존 프로그래밍 언어를 쉽게 사용할 수 없다는 것을 확신하게 된 두 가지 이유가 있다고 생각합니다:

  • 가스 계량을 염두에 두고 구현되지 않았습니다.
  • 결정론적으로 계산을 재생할 수 있어야 하는 경우에는 이러한 언어가 작동하지 않습니다.

. . .

질문 #3: Move 기반이 Rust인 이유는 무엇인가요?

Sam:

기반이라는 표현이 좀 과한 것 같지만, 확실히 Rust, 특히 차용 검사기라는 소유권 유형 시스템의 영향을 많이 받았다고 생각합니다. 앞으로 스마트 컨트랙트 공간 내부에서든 외부에서든 어떤 언어든 차용 검사기를 주의 깊게 살펴봐야 한다고 생각합니다. 구문 측면에서 볼 때, 저희의 구문은 많은 경우 Rust와 유사합니다.

저희는 Rust 프로그래머, 경험이 없는 프로그래머 또는 기존 스마트 컨트랙트 배경을 가진 분들도 쉽게 배울 수 있도록 하는 데 많은 신경을 쓰고 있습니다. 적어도 구문과 디자인 측면에서 Rust와 비슷한 수준으로 만들었습니다.

. . .

질문 #4: 일반적으로 Move 가 솔리디티보다 유연성이 떨어진다는 가정이 있는데, 왜 Move 을 블록체인으로 선택했나요?

Damir:

Move 는 정적으로 검증할 수 있고 컴파일 단계에서 발생할 수 있는 모든 오류를 방지하여 나중에 블록체인에 게시될 내용에 의존하지 않도록 하는 것을 목표로 합니다. 설계상 모든 것이 컴파일 단계에서 이루어지기 때문에 유연성을 발휘하는 것은 불가능합니다. 코드를 컴파일하고 푸시하면 바이트코드 검증처럼 실행됩니다. 따라서 게시할 때 보안이 보장됩니다. 그런 의미에서 유연성은 떨어지지만 대응은 더 안전합니다.

Sam:

용어에 대한 비판일 수도 있지만 표현력이 좋다고 생각합니다. 언어의 유연성이 반드시 좋다고 생각하지는 않습니다. 유연성은 취약점과 공격의 문을 열어줄 수 있습니다. 그래서 Move 에서 우리가 목표로 하는 것은 EVM 솔리디티와 마찬가지로 표현력이 풍부하고 사실 더 표현력이 풍부하지만, 여러 가지 방법이 아닌 한 가지 방법이라는 점에서 유연성은 떨어질 수 있습니다. 한 가지 방법은 잠재적으로 무섭고 취약성을 유발하는 대신 안전합니다.

. . .

질문 #5: Move 을 기반으로 하는 프로젝트와 EVM을 기반으로 하는 프로젝트는 어떻게 협력할 수 있나요?

엠마

현재 저희는 EVM 기반 블록체인인 셀로와 협력하여 Move 를 셀로 채널에 도입하고 있습니다. 이 프로젝트의 목표는 셀로 블록체인에서 Move 및 EVM을 모두 지원하여 솔리디티 또는 Move 컨트랙트 또는 둘 다 작성하고 셀로에 게시하여 상호 작용할 수 있도록 하는 것입니다. 또한 두 가상머신 간에 어떤 종류의 커뮤니케이션을 통합하고자 합니다. 해당 프로젝트를 기대해 주세요!

Move to EVM 컴파일러를 언급하고 싶습니다. Move 코드를 제공하면 EVM 바이트코드로 컴파일됩니다. 두 언어의 두 컨트랙트에 대해 동일한 테스트 케이스 세트를 사용할 수도 있습니다. 이 제품은 Move 와 EVM 간의 커뮤니케이션에 큰 도움이 될 수 있는 잠재력을 가지고 있다고 생각합니다.

. . .

질문 #6: Sui 및 앱토스의 장단점은 무엇인가요?

Sam:

Move 는 매우 의견이 분분한 핵심 언어가 내장되어 있는 임베디드 언어입니다. 일반적으로 계정 생성은 간단합니다. 예를 들어, 그로스 핵으로 사용자에게 NFT를 대량으로 배포하려는 경우 계정이 없어도 주소만 있으면 NFT가 사용자에게 배포될 수 있습니다. 탐색기에서 내 계정임을 확인하고 게임을 플레이할 수 있습니다. 나중에 편할 때 계정을 만들 수 있습니다.

특정 자산 유형을 받으려면 먼저 명시적으로 계정을 만든 다음 옵트인해야 하기 때문에 Move 의 Diem 스타일 통합에서는 이런 종류의 작업이 불가능합니다. Sui 에서는 전 세계적으로 고유한 ID를 가진 개체를 중심으로 구성하기 시작했으며, 이는 개체를 누구에게나 전송할 수 있다는 것을 의미합니다. 이러한 방식은 많은 사람이 협업하여 같은 것을 만들 수 있는 확장 가능한 게임처럼 권한이 필요하지 않다고 생각합니다. 왜 이렇게 했는지에 대한 기술적 언어 측면과 이를 가능하게 하는 사용 사례, 그리고 기존 Diem 스타일에서는 왜 어렵거나 불가능한지에 대한 자세한 내용은 Move 에서 확인할 수 있습니다.

Jen:

저희는 팀으로서 서로의 노력에 집중하고 있으며, 회사 간에는 상호 존중이 존재합니다. 따라서 커뮤니티 여러분께도 항상 경쟁사를 존중해 주세요. 조직 내 모든 사람이 최선을 다하고 있고 자신이 만들고 있는 것에 대해 진정으로 믿고 있기 때문입니다.

. . .

질문 #7: 비공개 소스 스마트 컨트랙트에 대해 어떻게 생각하시나요? Sui 에서 게시된 패키지를 비공개 소스로 사용할 수 있나요?

Adam:

오픈소스는 블록체인 플랫폼이 지향하는 정신에 어긋난다고 생각합니다. Sui 도 마찬가지입니다. 블록체인의 사용자로서 어떤 기능을 하는지 모르는 스마트 컨트랙트에 의해 처리되도록 돈을 보내고 싶으세요?

저희는 코드 공유를 장려하고자 하며, 커뮤니티 내에서 이를 보다 쉽게 만들어줄 프로젝트가 진행되고 있습니다. 클로즈 소스라는 개념은 이중적인 의미를 가질 수 있습니다. Move 언어, 즉 바이트코드를 지원하는 체인에 게시하는 것은 무엇이든 언제든지 바이트코드를 검사할 수 있기 때문에 폐쇄형 소스가 아닙니다.

. . .

질문 #8: Move VM에 대해 향후 해결해야 할 특정 핵심 변경 사항이 있나요?

Todd:

Move 에 스토리지와 상호 작용하는 새로운 방식을 도입하는 새로운 스토리지 계층이 있습니다. Move VM에는 새로운 바이트코드 작업을 추가하지 않고도 새로운 기본 기능을 추가할 수 있는 기능이 있습니다. VM이 Move 바이트코드에 대해 수행하는 일반적인 확인 검사 외에 자체적인 확인 검사 세트를 성공적으로 실행하고 있습니다.

. . .

질문 #9: 프로그래밍 경험이 전혀 없는데, Move 이 실제로 제가 처음 배우는 언어가 될 수 있나요?

Damir:

Move 으로 코딩을 시작할 수 있으며, 기존 책 중 하나를 가지고 Move 을 학습하고 스마트 컨트랙트를 게시할 수 있습니다. 하지만 스마트 콘트랙트나 네트워크의 모듈처럼 상호작용만 할 수 있다는 한계가 있습니다. 누군가가 작업하는 것을 보는 것은 좋지만, 웹사이트에 무언가(디앱)를 구축하는 것과 같이 사람들의 관심을 끌 수 있을 만큼 복잡한 것을 실제로 출시하려면 항상 더 범용적인 언어와 같은 제2의 언어가 필요할 것입니다.

. . .

질문 #10: 프로그래밍 언어를 처음 접하는 사람이 프로그래밍을 시작하거나 더 잘하기 위한 팁이 있나요?

Damir:

곧 앱을 구축하는 방법, 자바스크립트에 대한 약간의 지식으로 작업하는 방법, 자동화된 퍼블리셔를 수행하는 방법, 자바스크립트처럼 블록체인 외부에서 Move 컨트랙트를 호출하는 방법을 보여드리기 시작할 것입니다. 저희는 천천히 이 방향으로 나아가고 있습니다.

참고로, Discord에서 몇몇 사람들이 시작하기에 가장 좋은 방법은 Move 책단계별 가이드이며 많은 단어가 포함되어 있지만 일부 사람들에게는 효과가 있습니다. 그런 다음 공식 문서( Move )와 Sui 문서로 이동할 수 있습니다:

https://docs.sui.io/

https://examples.sui.io/


Sui 에서 Move 를 시작하는 방법을 설명하는 문서가 있는데, 꽤 방대한 분량이라고 생각합니다. 많은 설명이 있으므로 시작하기에 좋은 방법입니다.

. . .

질문 #11: Move 자산을 어떻게 이해해야 하나요?

엠마

Sui 에서 Sui 토큰 10개는 기본적으로 주소에 해당 값을 가진 Sui 코인 토큰이 있다는 것을 의미합니다. 이더리움에서는 어떤 종류의 토큰 10개를 가지고 있다고 가정해 보겠습니다. 스마트 컨트랙트에는 10 토큰의 가치를 가진 항목이 있는데, 이는 저희 모델보다 직관적이지 않고, 여러분이 실제로 10 토큰을 소유한 것도 아니며 다른 사람의 컨트랙트에 있는 가치와 같습니다.

솔리디티에서 ERC-20 토큰 전송을 원한다면 동시에 진행할 수 없습니다. 순차적으로 실행되어야 합니다. 따라서 Move 모델이 더 많은 잠재력을 가지고 있다고 생각합니다.

. . .

질문 #12: Sui 의 모듈이 게시된 후 변경 가능한 것에 대해 어떻게 생각하나요?

Todd:

저희도 이 문제에 대해 조금 생각해봤는데요, 참 까다로운 문제입니다. 버그를 수정할 수도 있지만 버그를 유발할 수도 있는 양날의 검과도 같은 문제입니다. 아직 고민 중이며, 말씀드리고 싶은 것은 다양한 계층이 있다는 것입니다. 저희는 모듈의 일부 버전이 코어 언어에 포함되기를 원하는데, 이는 Move 의 모든 블록체인 인스턴스화에 표시될 것이기 때문입니다. 결국에는 항상 새로운 버전 번호의 일부 버전을 갖게 될 것이며, 이는 새로운 패키지를 생성한다는 것을 의미합니다.

. . .

질문 #13: 메타 라이센스를 받지 않은 이유 Move?

Sam:

이런 일을 좋아하는 많은 사람들이 취미로 시작해서 여가 시간에 하다가 결국에는 직업이 될 때까지 할 것이라고 생각합니다. 이것이 제가 프로그래밍 언어에 대해 정말 좋아하는 점입니다. 프로그래밍 언어는 근본적으로 자유롭고 개방적이기 때문에 더 많은 가치를 부여합니다.

. . .

질문 #15: 현재 Move 를 통한 검증에 대한 연구 노력은 무엇인가요? 그리고 검증과 관련하여 현재 진행 중인 작업에는 어떤 것들이 있나요?

엠마

새로운 프라이머리를 적용해야 하는 이유는 증명자가 실제로 Diem을 위해 만들어졌고, Sui 와는 다른 Diem 글로벌 스토리지 모델에 과도하게 맞춰졌기 때문입니다. Move 증명 명령은 간단한 포스트 조건과 중단 조건에는 작동하지만, 오브젝트 저장소에 대해서는 아무것도 지정할 수 없습니다. 이 문제는 곧 개선될 예정입니다.

. . .

질문 #16: Move 에 코딩하는 방법에 대한 동영상이 있나요?

Jen:

초급, 고급, 중급 트랙으로 구성된 다양한 모듈과 온보딩에 도움이 되는 다양한 유형의 콘텐츠를 제공하는 시각적 동영상을 제작할 예정입니다.

Jen:

이번 AMA 세션을 마무리하기 전에 마지막으로 하고 싶은 말이 있나요?

Damir:

더 많은 Move 개발자, 더 많은 Move 개발자를 만나고 싶다는 소원을 남기세요!

Damir:

Move 에 대한 콘텐츠를 제작해 주시는 모든 분들께 진심으로 감사드립니다. 많은 리소스를 보고 있지만 모든 주제를 다루기는 정말 어렵기 때문에 정말 감사하게 생각하고 있습니다. Move 어떻게 작동하는지 항상 알 수 없고, 새로운 패턴을 발견하고, 항상 새로운 것을 발견하고, 모든 것을 다룰 수는 없습니다. Move 탐구하는 것은 재미있는 일입니다.