새로운 Smart Contract 프로그래밍 언어 만들기 — koa 소개, 목적

zeroFruit
teamNexters
Published in
4 min readJan 5, 2019

안녕하세요. koa팀 PM으로 이번 14기 활동을 하게된 김주형입니다. 주간 미션만 달랑 쓰기가 좀 그렇기도 하고해서 먼저 koa팀 프로젝트에 대해서 간단히 설명해보려고 합니다. 아이디어 투표 때 1등을 해서 ‘오… 다들 여기에 관심이 많구나’ 했는데, 막상 OT 아이디어 피칭 때 반응을 보니 썩 그런 것 같지는 않은 거 같더라고요. 특히 디자이너 분들은 더욱 어렵게 느끼셨을 거 같습니다. 현재 진행중인 koa 프로젝트는 여기서 만나보실 수 있습니다.

koa?

먼저 koa 프로젝트의 취지에 대해서 설명하겠습니다. 우선 현재 가장 잘 알려져있는 두 블록체인인 bitcoin과 ethereum의 smart contract를 작성하는 프로그래밍 언어는 각기 다른 단점을 가지고 있습니다. 물론 장점도 있지만요. bitcoinbitcoin script라고 불리는 프로그래밍 언어를 가지고 있고 ethereum의 경우는 solidity라는 프로그래밍 언어를 가지고 있습니다.

그런데 bitcoin script은 너무나 단순한 operation을 가지고 있어서 bitcoin script로 만들 수 있는 프로그램은 너무나 제한적입니다. 반면에 solidity는 풍부한 operation을 가지고 있기 때문에 만들 수 있는 프로그램이 다양하지만, 그 다양함만큼 프로그램이 ethereum 네트워크에 좋지 않은 영향을 줄 수 있는 위험이 있습니다.(물론 이것을 방지하기 위한 다른 개념을 도입했습니다.) 또한 프로그램이 복잡한만큼 정적 분석(이 프로그램이 얼마나 빨리 돌아갈지 분석 등)을 하기가 어렵다는 단점도 있습니다.

koa programming language concept

여기서 koa 프로젝트의 취지가 나오는데요. 이번 koa 프로젝트에서는 bitcoin script보다는 좀 더 다양한 프로그램을 만들 수 있고 solidity 보다 할 수 있는 일은 적지만 정적 분석도 쉽게 할 수 있는 두 가지의 절충점인 koa 프로그래밍 언어를 만들고자 합니다.

Blockchain needs UX!! 도움!!!!

koa 프로젝트를 시작하기 전에, 그리고 시작하면서도 UX, UI의 중요성에 대해서 간과하고 있었습니다. 그리고 아이디어 제시할 때도, 아이디어 피칭을 할 때도 디자인에 대해서 별로 언급이 없었던 것이 계속 마음에 걸렸어요. (정말 반성합니다..) 이제는 정말 디자인의 중요성에 대해서 절실하게 느끼고 있고 또 공감하고 있습니다.

블록체인은 다들 아시다시피 복잡하고 많은 개념들이 잘 어우러진 기술입니다. 그런데 보통 사람들에게 ‘블록체인이 뭐야?’라고 물으면 보통은 머리 속에 블럭을 그리고 그것을 연결시키는 체인을 그립니다. 그런데 다들 아시잖아요. 그보다 훨씬 복잡한 개념이란 걸… 블록체인이 대중들에게 본격적으로 알려지고나서 시간이 꽤 흘렀지만 아직 사람들이 이 정도밖에 상상할 수 없다는 것은 아직까지도 블록체인에 대해서 제대로 된 유저 경험을 못했다는 것 아닐까요? 제대로 된 UX 없이는 블록체인의 대중화는 꿈도 못 꿀 것입니다.

마지막으로 블록체인 & UX와 관련된 좋은 글이 있어서 아래에 공유합니다!

https://medium.com/coinmanager/%EB%B8%94%EB%A1%9D%EC%B2%B4%EC%9D%B8-ux%EC%9D%98-7%EB%8C%80-%EC%A3%84%EC%95%85-824a4959d300?fbclid=IwAR2sllQ1BiuPSDiWMLlxOKPZaFhd6_s0wsFQnBWi60wOglWZSmdJzy3JviA

Architecture

koa architecture

koa는 위와 같이 노란 박스에 들어가있는 네 가지 컴포넌트들로 구성됩니다. 자세하게 설명하면 너무 기술적인 내용이 들어가니 간단하게 한줄 요약하고 넘어가겠습니다.

  • Lexer: 소스 코드를 받아서 token들로 바꿉니다.
  • Parser: token들을 받아서 AST(Abstract Syntax Tree)로 바꿉니다.
  • Compiler: AST를 이용해서 컴퓨터가 이해할 수 있는 ByteCode로 바꿉니다.
  • VM: Bytecode를 직접 실행시켜 결과물을 얻습니다.

다음 포스트: Lexer는 어떤 일을 할까?

--

--