기술보안/etc

DApp(Decentralized Application)

kimcogi 2022. 5. 16. 13:25

DApp(Decentralized Application)은 이더리움, 큐텀, 이오스 같은 플랫폼 코인 위에서 작동하는 탈중앙화 분산 애플리케이션을 말하며, 간단하게 생각하면 분산앱으로 불리기도 한다

플랫폼 위에서 작동하는 DApp의 암호화폐는 coin이 아닌 token으로 구별된다

사실 탈중앙화 분산 애플리케이션이라고 하면 이해하기 힘든 부분이 너무많다 DApp의 경우에도 응용프로그램으로 분류를 할 수 있으며 사전적인 의미로는 너무 방대하기 때문이다

 

DApp에 대한 논의는 DavidJohnston의 github를 참고하는것이 매우 좋아 보인다

https://github.com/DavidJohnstonCEO/DecentralizedApplications

 

GitHub - DavidJohnstonCEO/DecentralizedApplications: Decentralized Applications White Paper and Spec

Decentralized Applications White Paper and Spec. Contribute to DavidJohnstonCEO/DecentralizedApplications development by creating an account on GitHub.

github.com

 

DavidJohnston의 내용을 정리한 것을 요약하여 보게 되면 DApp은 아래의 요소들을 충족해야만 한다

  • 애플리케이션은 완전히 오픈소스여야 한다
  • 애플리케이션은 자율적으로 작동해야 한다
  • Token의 대부분을 제어하는 Entity(독립체)가 없어야 한다
  • 애플리케이션은 제안된 개선점 및 시장 피드백에 대한 응답을 프로토콜에 적용할 수 있으나 모든 변경사항은 사용자들의 합의에 의해 결정되어야 한다
  • 애플리케이션 데이터와 작동 기록(log)들은 장애 발생을 피하기 위해 공개적이고 분산된 블록체인에 암호화하여 저장되어야 한다
  • 애플리케이션은 반드시 해당 애플리케이션에 접근하는데 필요한 암호 토큰(비트코인 또는 시스템의 기본 토큰)을 사용해야 하며, 채굴자/이용자로부터의 기여에 대한 보상방법은 토큰으로 보상되어야 한다
  • 애플리케이션은 노드들이 애플리케이션에 기여하는 가치를 증명하기 위한 행위로 표현되므로 표준 암호화 알고리즘에 따라 토큰을 생성해야 한다(PoW 알고리즘 등)

위 DApp의 충족 요소들은 강제력을 지니는 것이 아니기 떄문에 가이드라인의 역할로 보는것이 가장 좋다

(제일 유명한 DApp중 크립토키티만 봐도 raven이라는 자바스크립트 라이브러리를 사용하기 때문에 웹 서버가 별도로 존재하는 것을 알 수 있고 모든 내용이 체인에 올라가져있지 않다고 생각할 수 있다)

https://www.cryptokitties.co/

 

CryptoKitties | Collect and breed digital cats!

Collect and trade CryptoKitties in one of the world’s first blockchain games. Breed your rarest cats to create the purrfect furry friend. The future is meow!

www.cryptokitties.co

 

만약 가이드라인의 역할을 하는 충족 요소들을 간략하게 추려본다면 아래와 같다

  1. 오픈소스인가?
  2. 토큰이 한 독립된 개체에 집중되어 있나?
  3. 모든 변경사항은 사용자와의 합의가 이루어졌는가?
  4. 데이터는 퍼블릭 블록체인에 기록되는가?
  5. 토큰을 사용하는가?
  6. 토큰 생성 시 표준 암호화 알고리즘을 사용하는가?
  7. 사용자의 가치기여가 토큰으로 보상이 되는가?

여러가지 예를 들어 위 가이드라인을 생각해보자

 

  • 오픈소스인가?

블록체인 플랫폼을 살펴보게 되면 smart contract를 배포할 시 트랜잭션으로 배포되기 때문에 모든 사람들에게 오픈 소스로 운영되는 것을 알 수 있다

 

그래서 보통의 tracker들은 smart contract 배포 시 소스코드를 다운로드할 수 있게 만들었다

ICON tracker에서 볼 수 있는 source code와 Download 버튼


  • 토큰이 한 독립된 개체에 집중되어 있나?

각 회사들의 정책마다 전부 다르겠지만, 보통의 DApp들은 아래처럼 토큰이 어떻게 분배될건지 알려준다

Filecoin Allocation


  • 모든 변경사항은 사용자와의 합의가 이루어졌는가?

이 요소는 각 코인들의 정책에 따라 다르다고 볼 수 있다

ICON의 경우에는 smart contract 업데이트 기능이 존재하기 때문에 업데이트를 사용자가 원하는 시점에 가능하며 DApp의 개발사는 이것을 반영하여 수정이 가능하다

ICON transaction에서 smart contract 업데이트가 가능하다


  • 데이터는 퍼블릭 블록체인에 기록되는가?

이것은 DApp이라면 당연히 해당되는 사항이므로 다른 설명이 필요없을것 같다

 


  • 토큰을 사용하는가?

이것또한 웬만한 DApp들이 해당되는데 각 토큰마다 여러 종류의 토큰을 사용한다

(크립토키티의 경우 ERC721을 사용하고 있다)

(보통의 토큰은 non fungible 토큰을 사용한다)


  • 토큰 생성 시 표준 암호화 알고리즘을 사용하는가?

모든 플랫폼에서 각자만의 암호화 알고리즘이 존재한다

물론 어떤 플랫폼이냐에 따라서 암호화 알고리즘이 여러 종류로 운영되고 있겠지만, 대다수 DApp들은 sha3 256 Hash 함수를 사용한다


  • 사용자의 가치기여가 토큰으로 보상이 되는가?

ICON의 대표적인 플랫폼인 썸씽(Somesing)을 예로 들어보자

썸씽은 노래를 불러 평가를 받으면 토큰으로 보상을 받는 개념을 가지고 있는데

썸씽에서 노래를 부르는 것은 무료이지만 내가 부른 노래를 일정량 SSX 토큰으로 보증금으로 낸 후 정해진 기간 동안 Posting 하여 다른 사람들에게 노출된다 

노출된 Posting을 통하여 Donate를 받을 수 있으며 30%는 S/S, MR 비용으로 지출되고 70%는 노래를 부른 사람에게 돌아간다

썸씽(Somesing) 기본 페이지

 


DApp의 종류

DApp은 블록체인을 어떻게 사용하느냐에 따라서 총 3가지로 구분해 볼 수 있다

 

  1. Contract Only
  2. Save Data Only
  3. Hybrid
  • Contract Only

Contract Only는 블록체인에 존재하는 스마트 컨트렉트 자체로 비즈니스 로직을 구현하여 서비스를 만들어내는 것을 의미한다

특히 ICON에서 CrowdSale Smart Contract를 샘플로 제공할 만큼 많이 쓰이는 기법 중 하나이다

 


  • Save Data Only

Save Data Only는 OffChain Service 와 함께 블록체인을 사용하지만, 블록체인을 데이터 저장용도로만 사용을 하는 DApp을 의미한다

 

프라이빗 블록체인 기법과 비슷한 맥락이라고 생각을 하면되며 OffChain Service에서 필요한 데이터만 블록체인에 저장하기 때문에 OffChain Service의 비중이 매우 큰 기법이라고 보면 된다


  • Hybrid

hybrid는 말 그대로 두개의 기법이 합쳐져 하나의 서비스로 이루어지는것을 의미한다

OffChain Service와 OnChain Service가 합쳐진 DApp을 의미하며 smart contract의 존재 유무에 따라 hybird의 주 기능에 차이가 날 수 있다

 

블록체인은 보통 세대를 나눠서 사용하는데 1세대와 2세대가 주로 되며, 이 두 세대를 나누는 기준은 smart contract의 존재 유무이다

 

smart contract는 자체적으로 로직을 구현 할 수 있는 튜링 완전성을 지닌 프로그램 언어로, smart contract를 활용하여 서비스를 만들수 있다는 의미이다

 

smart contract는 하나의 OnChain Service로는 매우 좋으나 일반적인 사용자들이 쉽게 smart contract에 접근할 수 없다

 

왜냐하면 UI가 존재하지 않기 때문인데 보통은 GUI를 통하여 일반 유저들이 쉽게 접근할 수 있으나 smart contract의 경우에는 UI가 존재하지 않기 때문에 쉽게 접근할 수 없는 단점이 존재한다


 

 

 

 

 

DApp의 대해서 간단하게 알아봤는데.. 너무 어려운거같다

사실 안어려운게 어디있겠냐만은 뎁스있게 들어가면 들어갈수록 생각치도못한 난이도가 너무 높아져 DApp의 기본적인 구조라던가 OffChain Service, OnChain Service의 기본적인 구조, 실제 사용되는 DApp들의 구조들을 파악하는것이 너무 어렵다

 

이글은 블록체인의 블 자도 모르는 사람이 가볍게 쓴 글이라고.. 봐주셨음 좋을것같다

반응형