dApp 이란?
dApp에 대한 정의는 계속해서 변화하고 있습니다. 이것은 탈중앙 생태계가 성숙되고 규칙 및 정의가 확정될 때까지 변화할 것입니다.
저희팀은 dApp을 현재의 웹 애플리케이션을 보완하는 앱 디자인이라고 생각합니다. 중요한 구성 요소들을 피어 또는 노드들의 네트워크로 분산 시키기 때문입니다.
탈중앙은 탈중앙 또는 중앙, 이렇게 둘 중 하나를 결정하는 것이 아닙니다. 얼마만큼의 탈중앙과 중앙, 두 시스템을 적절히 사용하는 스펙트럼으로 나타낼 수 있습니다. 따라서 잘 디자인된 dApp은 기존 웹 애플리케이션 기반을 활용하여 사용자 경험은 유지하는 동시에 중요한 앱의 구성요소를 분산 시키며 위험을 완화시킬 수 있습니다.
예를 들면, 레이더 릴레이의 경우 사용자의 개인 정보 또는 사용자의 토큰을 보유하지 않지만 사용자가 거래를 원한다는 의도를 알기 위해 web3 와 0x 프로토콜에 의존합니다. 동시에 안정적인 웹 서버를 위해 Kubernetes라는 현재의 웹 애플리케이션을 사용합니다. 이 구조는 레이더의 서버에 민감한 정보를 저장하는 위험을 줄여주는 동시에 현재의 애플리케이션과 동일한 사용자 경험과 효율을 보여줍니다.
현재의 웹 애플리케이션
dApp이 어느 방향으로 나아갈 것인지 이해하기 위해서는 현재의 웹 애플리케이션의 위치를 이해해야 하는 것이 중요합니다.
수십 년 동안의 기술 발전으로 인터넷 프로토콜, 웹 서비스 제공 업체(AWS, GCP, Azure), 프로그래밍 언어 (HTML, CSS, Javascript) 등등의 혁신이 이루어졌습니다. 이 기술들은 애플리케이션을 몇 초 내로 불러올 수 있고 좋은 인터페이스를 가지며 사용자에게 전례 없는 정보 및 도구 액세스 권한을 제공합니다.
현대의 웹 애플리케이션은 인류의 많은 문제를 해결할 수 있었지만 모든 문제를 해결하지는 못하며 잠재적인 단점이 존재합니다. dApp 디자인은 이러한 단점에 대한 방안이며 현재의 웹 애플리케이션 구조를 보완할 수 있는 몇 가지 목표를 가지고 있습니다.
dApp의 주요한 목표
단일 실패 지점의 완화(SPOF)
현재의 웹 애플리케이션은 단일 실패 지점이 존재할 수밖에 없는 구조를 사용합니다. 서버 인프라, 코드 베이스, 데이터 베이스 등이 단일 실패 지점에 포함됩니다. HA(high availability) 그리고 GCP와 AWS와 같은 인프라 제공 업체의 출현으로 단일 실패 지점이 많이 완화되었지만 이러한 기술과 거대 기업들도 문제를 피하기가 어렵습니다. 예, 2018년 아마존 정전사고
dApp은 여러 피어들 또는 노드에 데이터나 인프라 조각들 같은 구성 요소를 분산하여 이러한 문제를 완화하는 것을 목표로 합니다. 네트워크의 모든 참가자가 데이터 복사본을 보유하고 있으면 데이터 손실이 어렵습니다.
중앙 시스템의 신뢰 감소
소프트웨어에서 비즈니스 로직은 업무에 필요한 데이터 처리를 수행하는 응용 프로그램의 일부입니다. 전통적인 웹 애플리케이션에서 이러한 비즈니스 로직 계약은 초기 생성 이후에도 변경이 가능한 소프트웨어로 구현되며 개인 서버에서 실행되기 때문에 변조 방지 및 감사 기능을 보장할 수 없습니다.
분산 원장 기술인 블록체인은 변조가 방지되고 불변하며 감사가 가능한 프로그램인 “스마트 컨트랙트”에서 비즈니스 논리를 구성하고 실행할 수 있는 방법을 제공합니다. dApp의 어떤 사용자도 스마트 컨트랙트에 구현된 로직을 검증할 수 있습니다. 스마트 컨트랙트는 작성대로 실행되는 것을 신뢰할 수 있게 하며 임의로 수정할 수 없기 때문에 중앙형 시스템을 신뢰해야 할 필요성이 줄어듭니다.
보안 향상
위의 두 가지 요소가 결합되면 현재의 애플리케이션 구조에서 나오는 리스크 들을 완화시켜 보안을 높일 수 있습니다. 구체적으로 설명하면, 클라이언트 쪽에 암호화를 도입함으로써 dApp은 특정 유형의 정보를 서버로 보내기 전에 암호화할 수 있습니다. 이러한 데이터들에 사용자들은 본인의 암호화 키를 가지고 액세스할 수 있으며 이 과정에서 회사 서버나 API 같은 데이터 게이트웨이는 필요가 없습니다.
네트워크 효과 활용
현대의 웹 애플리케이션은 네트워크 효과를 응집력 있는 서비스로 시도합니다. 좋은 예로는 “X로 로그인하세요”가 있습니다. 구글, 페이스북, 카카오톡 등은 이러한 교차 서비스를 제공하지만 그들의 유저 베이스나 정보는 그들 각각의 서버에 저장된 유저들로 제한됩니다. dApp은 공공의 분산 장부 또는 분산 저장소를 활용합니다. 결국 신원이나 인증, 권한 및 데이터 액세스는 네트워크의 참여자들에게 비례하게 제공됩니다.
암호화 및 분산 원장
현재 사용되는 몇 가지 기술은 dApp 생태계의 기본 요소를 구성하고 dApp이 목표를 달성할 수 있도록 합니다.
분산 데이터 저장소
(신뢰가 필요 없는 데이터 저장소)
분산 원장(블록체인), IPFS, 또는 Swarm과 같은 데이터 저장 솔루션을 사용하면 여러 노드에 영구적인 데이터를 저장할 수 있습니다.
분산 비즈니스 로직
(신뢰가 필요 없는 비즈니스 로직 실행)
앞서 언급한 이더리움 스마트 컨트랙트와 같은 기술을 통해 분산 원장에서 비즈니스 로직을 실행할 수 있습니다. 다른 블록체인에서는 이것은 체인코드라 부르기도 합니다.
클라이언트 암호화
(최종 사용자를 위한 암호화)
블록체인 지갑, 이더리움 Clef 및 패리티 UI는 클라이언트 측에 암호화 기능을 제공합니다. 이를 통해 사용자는 애플리케이션의 서버로 보내기 전에 데이터를 암호화하거나 서명할 수 있습니다. 또한 분산된 저장소 및 블록체인과 상호 작용할 수 있습니다.
저희 팀에서는 dApp을 새로운 디자인으로 생각합니다. 이것은 현재의 최고 애플리케이션 디자인을 사용하는 동시에 블록체인 및 P2P 기술로 강화합니다. 새로운 아이디어, 자원 및 혁신이 이 공간에 들어가면 엄청나게 활발한 생태계가 되며 토큰 경제가 구현될 것이라 믿습니다.