Search

16장 - BApp

대분류
블록체인
소분류
Blockchain - 그라운드X
유형
BApp
프론트엔드
백엔드
최종 편집 일시
2024/10/29 08:00
생성 일시
2023/05/05 17:00
15 more properties

Blockchain Application (BApp)

블록체인 어플리케이션(BApp)은 블록체인을 사용하는 어플리케이션
기존의 기술로 풀기 어려운 문제들을 블록체인의 특성을 활용하여 풀어내는 것이 목적
불변성과 투명성이 대표적인 블록체인 특성
한번 기록된 정보는 변경할 수 없다.
정해진 규칙(e.g., 블록생성 등 프로토콜이 가진 규칙, 컨트랙트로 구현된 규칙)에 따라 상태를 변경
기록의 내역이 블록에 공개되어 있으므로 누구든지 정보의 진실여부를 확인 가능

BApp들이 블록체인을 사용하는 유형

As a Payment Channel
토큰 사용 결제
As a Storage
블록체인을 안전한 저장소로 인식
As a World Computer
모든 노드가 동일한 연상 수행
어느 한 노드에 의전하지 않는 탈중앙화 실행 환경

BApp의 유형

Fully decentralized
사용자(클라이언트)가 직접 블록체인과 통신
Semi-decentralizeed with centralized proxy
클라이언트가 블록체인과 통신하기 위해 중개 서버와 통신
블록체인 기반으로 만들어진 서비스가 있고 그 서비스를 사용자들이 사용하는 형태
클라이언트 중개서버 블록체인
Fully Decentralized
Semi-decentralizeed with centralized proxy
장점
- 높은 투명성 - 신뢰형성에 필요한 비용 없음 - (설치형 BApp의 경우) 관리 비용 낮음
- (기존의 서비스들과 동일한) 높은 수준의 UX - 사용자가 블록체인과 직접 통신할 필요 없음 - 로직 변경 비교적 쉬움 - 제약사항 어느정도 완화
단점
- 사용자 책임 증가, 어려운 UX - 로직 변경 어려움 - 경우에 따라 사용자가 블록체인에 상시 접속할 필요 및 블록 복제 할 필요가 있음
- 신뢰 비용 발생 - 서비스가 Single Point of Failure (SPoF)가 됨 : 언제든지 다운 될 수 있다 : 서버가 여러 대 - 관리 비용 높음
다른 서버나 서비스에 의존하지 않고 블록체인과 직접 통신 한다면 탈중앙화되었다고 본다.

BApp 개발

프론트엔드 (Frontend)
사용자가 직접 사용하는 프로그램 (e.g., mobile app, web page/app)
User Interface (UI), 통신, 이벤트 처리 등을 사용자 환경 고려 개발
TX 생성, 서명, 전송 등을 프론트엔드에서 처리
백엔드 (Backend)
블록체인 동기화 등 컴퓨팅 리소스가 많이 필요한 일을 처리하는데 적합
블록체인 동기화, 블록 파싱(parsing), TX 전달, 가스비 대납 등을 백엔드에서 처리
컨트랙트 (Contract)
Fully decentralized = Frontend + Blockchain
Web + Klaytn
Android + Klaytn
Windows + Klaytn
Semi-decentralized = Frontend + Server + Blockchain
Web + Java Server on AWS + Klaytn
Android + Node.js Server on Azure + Klaytn

프론트 엔드 개발

BApp이 실행되는 환경에 따라 개발 방법이 달라짐
프론트엔드 개발에 영향을 끼치는 실행환경 중 하나가 지갑
지갑의 존재유무에 따라 개발방법이 변경
특정 지갑을 사용할 경우 해당 지갑이 제공하는 라이브러리를 사용

백 엔드 개발

블록체인 프로토콜 이외의 정보 관리할 때 필요
UX 향상 및 서비스 구현을 위해 TX 외 다른 정보 필요한 경우 백엔드 운영
e.g., 문서 공증 BApp
사용자가 문서 공증을 위해 BApp 사용
문서의 해시를 포함한 공증기록은 블록체인에 기록
정보의 누설을 원치 않을 경우 문서 원본은 블록체인에 기록하기 어려움
문서를 클라이언트에 보관할 수 있으나 분실의 위험, 여러 장치에 접근할 수 없는 점 등이 문제
백엔드에서 안전하게 원본 문서를 관리하여 편리한 서비스 구현이 가능
서비스 제공자가 실행환경을 결정
개발방법 선택이 비교적 자유로운 편이나 대부분의 경우 플랫폼 SDK 존재 유무에 따라 방향 결정