728x90
728x90

DApp(Decentralized Application) 개념 및 개발 환경 구축하기

들어가며

  • DApp(Decentralized Application)에 대해 알아보고 개발 환경을 구축해보자.

 

DApp(Decentralized Application)

개념

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

ⓒ Upbit

 

  • 기존의 ‘중앙화 애플리케이션(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

 

728x90
728x90