목차
- App의 정의
- dApp의 정의
- App vs dApp
- dApp만의 특징
App의 정의
Application Software을 의미하며, 운영 체제에서 실행되는 모든 소프트웨어 혹은 운영체제 위에서 사용자가 직접 사용하게 되는 소프트웨어들을 뜻한다.
dApp의 정의
Decentralized Application의 약자이며, 블록체인을 기반으로 한 앱을 의미한다. 즉, 탈중앙화 분산 어플리케이션을 dApp이라 부른다.
응용 프로그램(Application Software)이 dApp으로 간주되기 위해서는 4가지 조건을 만족하여야 한다.
- 완전히 오픈 소스여야 하며, 개인이나 그룹이 통제할 수 없다. 제안된 개선사항 및 시장 피드백에 대응하여 protocol을 조정할 수 있지만 모든 변경사항은 사용자의 합의에 의해 결정되어야 한다.
- 응용 프로그램의 데이터와 작동 기록은 [public, decentralized] 블록체인 네트워크에 암호화되어 저장되어야 한다.
- 응용 프로그램에 액세스하는 데 필요한 암호화 토큰을 사용해야 하며, 모든 가치 기여는 해당 토큰으로 보상되어야 한다.
- 노드가 응용 프로그램에 기여하는 가치의 증명 역할을 하는 합의 알고리즘에 따라 토큰을 생성해야 한다.
App vs dApp
분산원장 기술(DLT, Distributed Ledger Technology):
분산 원장 기술은 복제, 공유 또는 동기화된 디지털 데이터에 대한 합의 기술이다. 이때 데이터들은 지리적으로 여러 사이트나, 여러 국가 또는 여러 기관에 분산되어 있게 된다. 즉 중앙집중적인 관리자나 중앙집중의 데이터 저장소가 존재하지 않고 기능이 동작하게 된다.
dApp만의 특징
dApp의 장점
- Zero downtime
dApp은 개인이나 회사가 아닌 smart contract에 작성된 논리에 의해 제어되기 때문에 탈중앙화 될 수 있다. 따라서 smart contract가 블록체인에 구축되면, 네트워크가 client에게 항상 서비스를 제공할 수 있다. 이는 시스템을 이용할 수 없는 시간(downtime)이 없음을 의미한다.
뿐만 아니라 DApp은 분산형 네트워크에 구축되었기 때문에 악의적인 행위자가 개별 dApp을 대상으로 서비스 거부 공격을 시작할 수 없다. 분산형 네트워크에서는 네트워크 아키텍처의 일부가 작동하지 않더라도 계속 작동하기 때문이다. - Privacy
dApp을 배포하거나 사용하기 위해 실제 개인 신원 정보(real-world identity)를 제공할 필요가 없다. 가상화폐 지갑만 사용하여 dApp과 자유롭게 상호작용할 수 있다. - Resistance to censorship
사용자가 트랜잭션을 제출하거나, 앱을 배포하거나, 블록체인에서 데이터를 읽는 것을 네트워크상의 어떤 단일 주체도 차단할 수 없다. - Complete data integrity
블록체인에 저장된 데이터는 암호화 요소(cryptographic primitives) 덕분에 변경 불가능하고 논란의 여지가 없다. 악의적인 행위자는 이미 공개된 트랜잭션이나 기타 데이터를 위조할 수 없다. - Trustless computation/verifiable behavior
smart contract는 분석할 수 있으며 중앙 기관을 신뢰할 필요 없이 예측 가능한 방식으로 실행되도록 보장된다.
dApp의 단점
- Maintenance
블록체인에 게시된 코드와 데이터를 수정하기가 어렵기 때문에 유지보수가 중앙화된 App에 비하여 더 어려울 수 있다.
이는 개발자들이 일단 dApp을 배포하게 되면, 오래된 버전에서 버그나 보안 위험이 확인되더라도 업데이트를 하기 어려움을 의미한다. - Network congestion
하나의 dApp이 너무 많은 계산 resource를 사용하면 네트워크 혼잡이 발생한다. 트랜잭션이 네트워크의 처리량보다 더 빨리 전송되면 확인되지 않은 트랜잭션 풀이 빠르게 증가할 수 있기 때문이다. - User experience
일반적으로 최종 사용자(end-user)는 블록체인과 안전한 방식으로 상호 작용하는 데 필요한 툴 스택을 설정하는 것이 너무 어려울 수 있기 때문에, 사용자 친화적인 환경을 설계하는 것이 더 어려울 수 있다. - Centralization
사용자 친화적이고 개발자 친화적인 솔루션은 중앙 집중식 서비스처럼 보일 수 있다.
예를 들어, 키 또는 기타 민감한 정보 서버 측에 저장하거나, 중앙 집중화된 서버를 사용하여 프런트엔드에 서비스를 제공하거나, 블록체인에 쓰기 전에 중앙 집중화된 서버에서 중요한 비즈니스 로직을 실행할 수 있다. - 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/분산원장