DApp(Decentralized Application) 개념 및 개발 환경 구축하기
들어가며
- DApp(Decentralized Application)에 대해 알아보고 개발 환경을 구축해보자.

DApp(Decentralized Application)
개념
- 탈중앙화 애플리케이션의 약자로 탈중앙화된 블록체인 플랫폼을 기반으로 작동하는 앱을 말한다.
- 예를 들어 안드로이드 같은 스마트폰 운영체제가 이더리움과 같은 '플랫폼'이라면 안드로이드용 스마트폰 앱이 디앱이라고 할 수 있다.

- 기존의 ‘중앙화 애플리케이션(Centralized Application)’에서는 중앙 서버의 데이터베이스에 정보를 저장하고 그 운용 역시 중앙 서버를 통해 이루어 졌다.
- 하지만 디앱에는 중앙 서버 없이 서버가 가졌던 신뢰와 권한을 블록체인 네트워크에 참여하는 수많은 컴퓨터가 나눠 갖는다.
- 디앱이란 개념은 스마트 컨트랙트가 도입되면서 본격적으로 사용되기 시작하여 현재는 DAO, DeFi, NFT 마켓플레이스, P2E(Play-to-Earn) 등 다양한 형태로 발전하고 있다.
- 예를 들어 가상자산 시장에서 가장 많이 사용되는 디앱은 탈중앙화 거래소(DEX, Decentralized Exchange)이다.
- 특정 운영 주체가 거래를 매개하는 중앙화된 거래소와는 달리 탈중앙화 거래소는 중간 매개자 없이 스마트 컨트랙트를 통해 유저와 유저가 직접 거래하게 된다.
- ‘Daap’가 아니라 ‘DApp’가 올바른 표기법이다.
- ‘Dapp’ 또는 ‘dApp’이라고도 쓴다.
- 단수형이 아니라 복수형으로 표현하여, 디앱스(DApps) 또는 댑스(dApps)라고도 한다.
장점
① 보안성 및 투명성
- 데이터를 중앙화 된 데이터베이스에 저장하는 기존의 앱과 다르게 중요 데이터를 탈중앙화된 블록체인에 저장하여 데이터의 보안성과 투명성을 높일 수 있다.
② 인센티브
- 사용자의 참여 및 행동에 따라 스마트 계약을 통해 코인을 제공할 수 있다.
③ 거버넌스 참여
- 프로젝트의 방향성에 대한 제안 및 공동 의사 결정을 코인 보유자들이 투표로 결정할 수 있다.
단점
① 느린 속도
- 블록체인의 블록 생성 시간에 따라 속도가 달라지지만 일반적인 앱보다는 느리다.
- 또한 디앱의 사용량이 증가하여 블록체인의 처리량을 초과하면 데이터를 기록하기 위한 시간이 더욱 증가한다.
② 높은 비용
- 블록체인의 유지 비용은 일반적인 중앙화 데이터베이스보다 비싸다.
- 따라서 블록체인에 데이터를 기록하는 데는 비용이 필요하다.
③ 불편한 사용자 경험
- 블록체인을 사용하는 디앱의 근본적 문제는 사용자 경험 문제로 귀결된다.
- 사용자는 느린 속도로 인해 즉각적으로 디앱과 상호작용 할 수 없다.
- 또한 높은 거래 비용은 사용자가 지불해야 한다.
DApp 개발 환경 구축하기 (Windows)
설치 요구사항
- Windows 10 이상 (2004 버전 이상)
- 64비트 (x64)
개발 환경 구축하기
- DFX를 이용한 DApp 개발 환경을 구축해보자.
DFX는 프로그래밍 언어 Rust로 작성된 분산형 컴퓨팅 프로토콜로, 탈중앙화된 서비스를 제공하고, 블록체인과 비슷한 분산형 시스템을 통해 DApp을 구축하고 실행할 수 있도록 지원한다. DFX는 DApp을 개발하기 위한 플랫폼으로서, 탈중앙화된 컴퓨팅을 활용하여 안전하고 효율적인 애플리케이션을 구축하는 데 도움을 준다. Rust 언어로 개발된 이 프로토콜은 분산 네트워크 상에서 실행되며, 스마트 계약과 유사한 기능을 제공하여 안정적인 탈중앙화된 애플리케이션을 구현할 수 있게 해준다. DFX는 탈중앙화된 애플리케이션을 만들기 위한 도구와 인프라를 제공하여 개발자들이 분산 시스템을 활용하여 안전하고 효율적인 DApp을 구축할 수 있도록 지원한다.
WSL 설치하기
- PowerShell을 관리자 모드로 실행한 후, 아래 명령을 실행하여 우분투를 설치해준다.
> wsl --install -d Ubuntu
- 설치 완료 후, 아래 명령을 실행하여 설치가 정상적으로 되었는지 확인해본다.
> wsl --list --verbose
VS Code 및 확장 프로그램 설치하기
- VS Code 설치하기
Visual Studio Code - Code Editing. Redefined
Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications. Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.
code.visualstudio.com
Motoko
확장 프로그램 설치하기
Motoko - Visual Studio Marketplace
Extension for Visual Studio Code - Motoko language support
marketplace.visualstudio.com
WSL
확장 프로그램 설치하기
WSL - Visual Studio Marketplace
Extension for Visual Studio Code - Open any folder in the Windows Subsystem for Linux (WSL) and take advantage of Visual Studio Code's full feature set.
marketplace.visualstudio.com
노드(Node) 설치하기
- 시작 메뉴에서 설치한 우분투(Ubuntu)를 찾아 실행하여 터미널에 진입한다.

- 아래 명령들을 실행하여 Homebrew 모듈을 설치한다.
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
$ sudo apt-get install build-essential
- 설치를 한 후, 아래 명령을 실행하여 버전을 확인해본다.
$ brew -version
- 아래 명령을 실행하여 노드(Node)를 설치한다.
$ brew install node@16
- 노드를 설치한 후, 버전을 확인해본다.
$ node --version
DFX 설치하기
- 우분투 터미널에서 아래 명령을 실행하여
0.9.3
버전의dfx
를 설치해준다.
$ DFX_VERSION=0.9.3 sh -ci "$(curl -fsSL https://sdk.dfinity.org/install.sh)"
- 설치가 완료되면 마지막 라인에 아래와 같은 설치 경로가 나타난다. 이 경로를 복사해준다.
info: Installed /home/(yourname)/bin/dfx
- 아래의 명령을 실행하여 경로로 지정해준다.
<REPLACE WITH YOUR INSTALLATION PATH>
부분에 위에서 복사한 설치 경로를 입력해준다.
$ export PATH=$PATH:<REPLACE WITH YOUR INSTALLATION PATH>
- 아래의 명령을 실행하여 성공적으로 경로가 추가되었는지 확인해준다.
$ echo "${PATH//:/$'\n'}"
dfx
가 성공적으로 실행되었는지 아래 명령을 실행하여 확인해본다.
$ dfx --version
'dfx 명령을 찾을 수 없다'는 오류가 뜰 경우, 우분투 터미널을 종료한 후 다시 실행해준다.
샘플 프로젝트 만들어보기
- 우분투 터미널에서 아래 명령을 실행하여
ic-projects
폴더를 만들어준다. 그리고 해당 디렉터리에 진입해준다.
$ mkdir ic-projects
$ cd ic-projects
- 아래 명령(
dfx new
)을 실행하여hello
DApp 프로젝트를 생성한다.
$ dfx new hello
- 프로젝트 생성 작업이 끝나면 해당 경로에
hello
디렉터리가 생성된다. 해당 디렉터리로 진입한다.
$ cd hello
- 아래 명령을 실행하여 로컬
dfx
를 실행한다.
$ dfx start
- 새로운 터미널을 실행한 후 해당 터미널에서 아래의 명령을 실행한다. (경로 :
./ic-projects/hello
)
$ dfx deploy
- 아래 명령을 실행하여
npm
을 실행해준다.
$ npm start
http://localhost:8080/
에 접속하여 확인해본다.
참고 사이트
디앱(DApp)이란 무엇인가? - 업비트 투자자보호센터
디앱(DApp, Decentralized Application)이란 탈중앙화 애플리케이션의 약자로 탈중앙화된 블록체인 플랫폼을 기반으로 작동하는 앱을 말합니다. 예를 들어 안드로이드 같은 스마트폰 운영체제가 이더리
upbitcare.com
디앱(DApp)이란 무엇입니까? 丨이해 및 소개 - BTCC
DApp(디앱)은 이더리움, 큐텀, 이오스 같은 플랫폼 코인 위에서 작동하는 탈중앙화 분산 어플리케이션을 말합니다. 중앙 서버를 거치지 않고 , 블록체인, 다시 말해 플랫폼 코인을 기반으로
www.btcc.com