dApp이란?

TaeUk Kim
HYBLOCK
Published in
5 min readFeb 14, 2023

목차

  1. App의 정의
  2. dApp의 정의
  3. App vs dApp
  4. dApp만의 특징

App의 정의

Application Software을 의미하며, 운영 체제에서 실행되는 모든 소프트웨어 혹은 운영체제 위에서 사용자가 직접 사용하게 되는 소프트웨어들을 뜻한다.

dApp의 정의

Decentralized Application의 약자이며, 블록체인을 기반으로 한 앱을 의미한다. 즉, 탈중앙화 분산 어플리케이션을 dApp이라 부른다.

응용 프로그램(Application Software)이 dApp으로 간주되기 위해서는 4가지 조건을 만족하여야 한다.

  1. 완전히 오픈 소스여야 하며, 개인이나 그룹이 통제할 수 없다. 제안된 개선사항 및 시장 피드백에 대응하여 protocol을 조정할 수 있지만 모든 변경사항은 사용자의 합의에 의해 결정되어야 한다.
  2. 응용 프로그램의 데이터와 작동 기록은 [public, decentralized] 블록체인 네트워크에 암호화되어 저장되어야 한다.
  3. 응용 프로그램에 액세스하는 데 필요한 암호화 토큰을 사용해야 하며, 모든 가치 기여는 해당 토큰으로 보상되어야 한다.
  4. 노드가 응용 프로그램에 기여하는 가치의 증명 역할을 하는 합의 알고리즘에 따라 토큰을 생성해야 한다.

App vs dApp

App과 dApp간의 비교

분산원장 기술(DLT, Distributed Ledger Technology):

분산 원장 기술은 복제, 공유 또는 동기화된 디지털 데이터에 대한 합의 기술이다. 이때 데이터들은 지리적으로 여러 사이트나, 여러 국가 또는 여러 기관에 분산되어 있게 된다. 즉 중앙집중적인 관리자나 중앙집중의 데이터 저장소가 존재하지 않고 기능이 동작하게 된다.

dApp만의 특징

dApp의 장점

  1. Zero downtime
    dApp은 개인이나 회사가 아닌 smart contract에 작성된 논리에 의해 제어되기 때문에 탈중앙화 될 수 있다. 따라서 smart contract가 블록체인에 구축되면, 네트워크가 client에게 항상 서비스를 제공할 수 있다. 이는 시스템을 이용할 수 없는 시간(downtime)이 없음을 의미한다.
    뿐만 아니라 DApp은 분산형 네트워크에 구축되었기 때문에 악의적인 행위자가 개별 dApp을 대상으로 서비스 거부 공격을 시작할 수 없다. 분산형 네트워크에서는 네트워크 아키텍처의 일부가 작동하지 않더라도 계속 작동하기 때문이다.
  2. Privacy
    dApp을 배포하거나 사용하기 위해 실제 개인 신원 정보(real-world identity)를 제공할 필요가 없다. 가상화폐 지갑만 사용하여 dApp과 자유롭게 상호작용할 수 있다.
  3. Resistance to censorship
    사용자가 트랜잭션을 제출하거나, 앱을 배포하거나, 블록체인에서 데이터를 읽는 것을 네트워크상의 어떤 단일 주체도 차단할 수 없다.
  4. Complete data integrity
    블록체인에 저장된 데이터는 암호화 요소(cryptographic primitives) 덕분에 변경 불가능하고 논란의 여지가 없다. 악의적인 행위자는 이미 공개된 트랜잭션이나 기타 데이터를 위조할 수 없다.
  5. Trustless computation/verifiable behavior
    smart contract는 분석할 수 있으며 중앙 기관을 신뢰할 필요 없이 예측 가능한 방식으로 실행되도록 보장된다.

dApp의 단점

  1. Maintenance
    블록체인에 게시된 코드와 데이터를 수정하기가 어렵기 때문에 유지보수가 중앙화된 App에 비하여 더 어려울 수 있다.
    이는 개발자들이 일단 dApp을 배포하게 되면, 오래된 버전에서 버그나 보안 위험이 확인되더라도 업데이트를 하기 어려움을 의미한다.
  2. Network congestion
    하나의 dApp이 너무 많은 계산 resource를 사용하면 네트워크 혼잡이 발생한다. 트랜잭션이 네트워크의 처리량보다 더 빨리 전송되면 확인되지 않은 트랜잭션 풀이 빠르게 증가할 수 있기 때문이다.
  3. User experience
    일반적으로 최종 사용자(end-user)는 블록체인과 안전한 방식으로 상호 작용하는 데 필요한 툴 스택을 설정하는 것이 너무 어려울 수 있기 때문에, 사용자 친화적인 환경을 설계하는 것이 더 어려울 수 있다.
  4. Centralization
    사용자 친화적이고 개발자 친화적인 솔루션은 중앙 집중식 서비스처럼 보일 수 있다.
    예를 들어, 키 또는 기타 민감한 정보 서버 측에 저장하거나, 중앙 집중화된 서버를 사용하여 프런트엔드에 서비스를 제공하거나, 블록체인에 쓰기 전에 중앙 집중화된 서버에서 중요한 비즈니스 로직을 실행할 수 있다.
  5. Performance overhead
    블록체인 트릴레마 중에서 확장성을 타협한 체인을 사용하는 dApp의 경우, 성능 오버헤드가 크고 확장이 매우 어렵다. 또한 합의 과정에 소요되는 속도의 지연 문제도 존재한다.

마무리

이 글은 dApp에 대하여 설명하는 첫 번째 글로 dApp의 정의와 dApp의 특징에 대하여 살펴보았다. 두 번째 글에서는 dApp의 종류에 대하여 살펴볼 예정이다.

Reference

https://ethereum.org/ko/developers/docs/dapps/
https://velog.io/@yonaaaaaaa_a/DApp
https://ko.wikipedia.org/wiki/응용_소프트웨어
https://ko.wikipedia.org/wiki/분산원장

--

--