728x90
728x90
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 설치하기
- @Motoko@ 확장 프로그램 설치하기
- @WSL@ 확장 프로그램 설치하기
노드(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/@에 접속하여 확인해본다.
참고 사이트
728x90
728x90