‘마스터링 이더리움’ 세미나 10 – 12장. 탈중앙화 애플리케이션(댑)
이번 세미나에서는 ’12장. 탈중앙화 애플리케이션(댑)’을 다룹니다.
아래 인용한 본문 내용을 주의 깊게 여러 번 읽어봅니다. 댑이 무엇이고 추구하는 바가 뭔지 명확히 이해하도록 합니다.
이더리움 초기부터 창립자의 비전은 ‘스마트 컨트랙트’보다 훨씬 광범위했다. 즉, 웹을 재발명하고 web3라고 불리는 댑의 새로운 세계를 만드는 것이었다. web3 댑은 스토리지(storage), 메시징(messaging), 네이밍(naming) 등 애플리케이션의 다른 모든 측면을 탈중앙화하는 것에 관한 것이다.
블록체인 개발에 입문한 개발자들이 흔히 저지르는 실수 중 하나가 댑을 ‘스마트 컨트랙트’라고 생각하는 것입니다. 댑은 이름 그대로 ‘탈중앙화된 앱입니다’입니다. 앱인데 탈중앙화되었다는 것입니다.
주의할 것은 개발 결과물로서의 탈중앙화 뿐만 아니라 개발 과정 또한 탈중앙화되어야 한다는 것입니다. 댑 개발이 오픈소스 개발을 이상적으로 여기는 이유입니다.
댑은 앱입니다. 일부 또는 완전히 탈중앙화된 앱입니다. 댑 브라우저와 연동된 앱입니다. 프런트엔드는 모바일이나 웹으로 개발됩니다.
백엔드는 스마트컨트랙트로 작성되고 블록체인 네트워크에 배포됩니다. 프런트엔드 개발에 자바스크립트가 주로 사용되니 백엔드 서비스와 연동할 자바스크립트 라이브러리를 제공해 주면 좋을 것입니다. 이더리움은 web3.js를 제공합니다.
백엔드는 블록체인으로 탈중앙화되었으니 프런트엔드만 탈중앙화하면 됩니다. 프론트엔드를 탈중앙화하려면 프론트엔드 기능을 실행하기 위한 파일들을 배포하고 실행할 수 있는 저장소와 실행 환경이 제공되어야 합니다. 이더리움은 탈중앙화된 파일 저장소인 스웜으로 이를 가능하게 합니다. IPFS를 사용할 수도 있습니다. 스웜을 사용하면 중앙 웹 서버가 아닌 탈중앙화 P2P 시스템을 통해 웹사이트에 접근할 수 있습니다.
네트워크로 연결된 앱에서 중요한 것들 중 하나는 앱들 사이에 또는 사용자들 사이에 메시지 교환이 가능해야 한다는 것입니다.이더리움은 위스퍼를 통해 이를 지원합니다.
네트워크로 연결된 자원들은 고유하게 식별할 수 있는 이름이 필요합니다. 전통적인 인터넷에서는 DNS를 사용합니다. 이더리움에서는 ENS(Ethereum Naming System)을 지원합니다.
왜 앱을 구성하는 모든 요소들이 탈중앙화되어야 할까요? 오라클에서도 살펴보았지만 탈중앙화에서는 서비스를 구성하는 한 요소라도 중앙화되면 ‘중앙화된 대상을 신뢰’해야 한다는 근본적인 문제가 발생하기 때문입니다.
기본 댑 사례: 경매 댑
지금까지 학습한 내용 만으로 경매 댑을 만들기는 쉽지 않습니다.
세부적인 내용에 너무 깊이 들어가지 말고, 댑 개발 과정을 전체적으로 살펴보는데 주의를 기울입니다.
이 세미나의 후속 세미나인 ‘이더리움 댑 개발 세미나’에서 경매 댑을 상세하게 다루도록 하겠습니다.