DApp ( Decentralized Application )
탈중앙화: 중앙 서버 없이 각 노드들이 동일한 복제본을 보관하면서 데이터베이스 역할을 해주게 되어 거래 내역의 데이터를 개개인의 서버에 모두 기록하는 방식
- 분산형 애플리케이션(탈중앙화)
- 블록체인 내에서 실행되는 애플리케이션
- 기존 중앙화된 시스템에서 벗어나 동작하는 모든 앱
💡 Why DApp?
기존 앱 실행 방식: 데이터를 이동시키기 위하여 반드시 중앙서버(서버에 DB 구축)를 거쳐야 했다.
-> 정보해킹의 위험성, 투명성 부족의 단점 존재
DApp은 이러한 단점을 보완 할 수 있다
-> 중앙 서버가 존재하지 않고 해당 서버에서 데이터를 사용하기 위하여 필요한 허가 권한 및 주장 권한을 네트워크에 참여하는 모든 참여자가 나눠가진다.
APP | DAPP | |
운영주체 | 중앙서버 및 서버 관리자 | 모든 참여자 |
핵심장점 | 신속한 데이터 처리 속도 | 투명한 데이터 처리 |
기존 앱 방식
통제 기관이 운영하는 중앙 집중식 네트워크에서 실행되고 중앙 서버에 데이터를 보관한다. 앱에 액세스하면 사용자의 자격증명(사용자 이름, 비밀번호)가 유효한지 확인 후 요청이 해당 서버로 전송되고 결과가 사용자에게 다신 전송된다.
효율적이지만 엄청난 양의 사용자 데이터가 축적되어 해킹의 위협이 존재한다.
중앙 집중식 데이터 전송 과정
송금시 모든 과정이 중앙 집중식 네트워크에서 발생, 은행이 모든 데이터를 소유한 채 거래를 독단적으로 검증
DApp
<정의>
- DApp은 오픈 소스 코드를 특징으로 하고 제3자의 개입 없이 작동해야 하며 사용자가 자동으로 실행되는 변경 사항을 제안하고 투표할 수 있도록 해야 합니다.
- 모든 데이터는 공개적으로 접근 가능한 블록체인 네트워크에 상주해야 하며 중앙 지점의 취약성을 제거하기 위해 분산화를 강조합니다.
- DApp은 채굴자 및 스테이커와 같은 기여자에 대한 액세스 및 보상을 위해 암호화 토큰을 통합해야 합니다.
- DApp은 작업 증명(PoW) 또는 지분 증명(PoS)과 같은 토큰 생성을 위한 합의 메커니즘을 사용해야 합니다.
블록체인 네트워크는 탈중앙화되어 있어 중개인이 필요하지 않고 자동화된 스마트 컨트랙트로 기존 기능을 그대로 이용할 수 있다.
DApp 데이터 전송 과정
암호화폐 지갑(메타마스크)에 로그인하고 송금할 액수를 선택한 후 트랜잭션을 확정하면 스마트 컨트랙트가 거래를 완료, 동시에 블록체인 유효성 검사기가 트랜잭션을 검증하고 블록체인에 영구적인 기록을 생성
- 한 지점의 오류로 인해 전체 중단 방지: 기존 앱과 달리 DApp은 블록체인 네트워크 내 여러 노드에 걸쳐 있기 때문에 더 안정적이다. 예를들어 Instagram에 오류가 발생하면 중앙 집중식 서버에 있기 때문에 사용자 모두가 앱에 액세스할 수 없음. 모든 노드가 동시에 실패해야 멈추므로 DApp이 오프라인 상태가 될 가능성은 무척 낮다.
- 오픈 소스: 블록체인 기술은 탈중앙화 특성으로 인해 모든 네트워크 구성원에게 소스 코드가 있어야 액세스 가능. 중개자가 없는 생태계이므로 사기 및 악용 멀웨어를 피하기 위해 사용자가 각 앱을 식별하고 확인해야한다.
- 탈중앙화 합의 메커니즘: 블록체인은 중앙 기관이 없으므로 모든 거래의 유효성을 보장하기 위해 합의 메커니즘을 사용해야 한다. DApp 거래가 발생할 때마다 네트워크가 전체가 함께 검증을 담당한다.
- 유틸리티 토큰: 기존 앱에 이용료를 지불하듯, 많은 DApp은 플랫폼 경제가 돌아갈 수 있도록 유틸리티 토큰이라는 것을 활용한다. 많은 유틸리티 토큰은 용도가 많지만 특히 DApp 거버넌스, 인앱 거래, 보상 프로그램에 활용한다.
DApp 동작방식
- 사용자의 이벤트를 웹 페이지의 JS가 처리한다.
- 이벤트 발생시 web.js 라이브러리 함수를 사용하여 스마트 컨트랙트와 연결된 이더리움 노드와 연결하고 이벤트에 맞는 함수 A를 호출한다.
- 연결된 로컬 이더리움 노드 (ex. 개발자의 컴퓨터)는 메시지를 처리하고 검증한 후 피어 노드(옆노드)로 전달한다.
- 거래 내역이 채굴 노드를 만날 때까지 전파한다.
- 각 노드는 새 블록을 받으면 해당 블록의 개별 거래 내역이 정상적인지, 전체 블록이 유효한지 검증한다.
- 합의: 이후 블록에 존재하는 모든 거래 내역을 처리하며 이 과정에서 계약 상태의 유효성을 암시적으로 확인한다.
- 검증이 성공적으로 완려되면 confirmation 이벤트를 발생시키고 웹 UI를 포함하여 연결된 모든 클라이언트에 전파한다. 이것을 UI가 화면에 출력하게 된다.
각 노드들이 가진 데이터를 지속적인 싱크를 통해 일치시켜 나감으로써 데이터의 정합성을 유지한다. 또한 노드는 네트워크 관리 및 거래 내역 검증에 컴퓨팅 리소스를 제공하고 그에대한 보상으로 암호화폐를 얻는다.
DApp 구조
Client
- Web3.js라는 자바스크립트 라이브러리를 통해 특정 서버와 직접 통신 가능
Server
- 각노드가 서로 통신하며 같은 코드를 실행, 같은 블록체인 데이터베이스를 가짐
- 이때 노드는 모든 노드에 연결될 필요가 없고 전체를 통과하는 마스터 노드 또한 존재하지 않음
- 몇개의 노드에만 연결되어 있어도 서로 통신을 통해 빠르게 전체 네트워크에 데이터 전달 가능
▶ 클라이언트가 API(애플리케이션 프로그램 인터페이스) 가 아니라 특정 라이브러리를 통해 서버와 통신, 서버는 단일 서버가 아니라 여러 노드간의 연결로 구성되어 있다.
web3.js
백엔드와 커뮤니케이션하는 기본적인 기능들을 묶어놓은 편리한 자바스크립트 라이브러리이다. 계좌 잔액 조회, 새로운 트랜잭션을 블록체인에 추가할때 사용한다.
SmartContracts
솔리디티(Solidity)라는 언어로 작성된 스마트 컨트랙트는 솔리디티 컴파일러에 의해 바이트코드로 블록체인에 배포되게 된다.
이 바이트코드에 접근해서 사람(개발자)이 이해할 수 있는 코드로 보여주는 인터페이스가 필요한데, 이때 필요한 것이 APPLICATION BINARY INTERFACE 다.
ABI 는 블록체인에 올려져있는 스마트 컨트랙트의 변수나 함수에 접근하기 위한 인터페이스이다.
Web3.js는 이 ABI를 통해 EVM(Ethereum Vritual Machine)과 통신할 수 있음.
[BlockChain] Dapp 개념과 구조
이 글은 2017, 2018년 블록체인 학회 활동때 공부한 것을 옮긴 글로 지금은 업데이트된 부분이 있을 수 있으니 유의해주세요. 또한 사진의 출처를 명시하지 못한 점 정말 죄송합니다. (옛날 발표자
eunjin3786.tistory.com
✨ 블록체인 멀리보기 - 네트워크로 보는 Dapp의 흐름 ✨
Dapp은 어떻게 동작하는가? Dapp 동작원리 알아보기
velog.io
탈중앙화 앱(DApp)이란 무엇이고 어디에 사용되나요? | Brave
탈중앙화 애플리케이션(DApp 또는 dApp)은 블록체인 네트워크상에 구동되는 애플리케이션입니다. 이 기사에서는 DApp이 무엇인지, 어디에 사용되는지 설명해드립니다.
brave.com
블록체인을 기반한 소셜 DApp 설계
개요
익명 소셜 커뮤니티 상에서 블록체인 기술을 활용하여 보안과 투명성 향상 및 신뢰성 있는 서비스 제공
많은 대학생들의 익명 커뮤니티를 통한 스터디 과정에서 발생 할 수 있는 문제를 방지하기 위해 블록체인 기술의 특징을 적용한 DApp을 설계하였다. 사용자의 정보저장에 블록체인 기술을 응용하여 데이터 위변조를 막고 모든 정보가 연결되어 있는 블록체인의 무결성을 이용해 익명으로 스터디 그룹을 생성하는 서비스를 이용할 수 있다.
애플리케이션 동작방식
Near-Class는 사용자 데이터의 무결성과 안전성을 보장하고 신뢰성 있는 스터디 활동이 가능하다는 장점 을 가진다. 또한 스터디 기록과 결과물을 영구적으로 블록체인에 저장하여 데이터 의 변조나 손상의 위험으로부터 보호할 수 있다.
저장된 데이터를 스터디 참여자가 모두 열람할 수 있는 점은 데이터의 투명성과 불변성을 검증할 수 있어 스터디 참여자들이 스터디의 진행상황과 결과에 대해 신뢰를 가질 수 있게 한다.
Near-Class만의 특징
익명 소셜 플랫폼 모델인 Near-Class는 온라인으로 스터디를 생성하고 안전하게 오프라인 모임을 할 수 있도록 도와준다.
시사점
Near-Class의 장점을 통해 후에 커리어 플랫폼으로 사용 영역을 확장 할 수 있을 것이다.
hyunnna/nearclass (github.com)
GitHub - hyunnna/nearclass
Contribute to hyunnna/nearclass development by creating an account on GitHub.
github.com
'보안 > WEB' 카테고리의 다른 글
[Web] HTTP Method 정리 (0) | 2024.05.08 |
---|---|
[Web] HTTP 상태 코드 정리 (0) | 2024.05.08 |
[Splunk] 수집 로그 (0) | 2024.04.20 |
[Naver] Lucy XSS Filter (0) | 2024.04.13 |