◆ 탈중앙화
▶ 개요
-
상품을 구매하기 위해서 인터넷으로 가격을 비교하다가 주로 이용하는 WellKnown.com보다 30퍼센트 저렴한 잘 알려지지 않은 SmallWebRetailer.com을 발견해서 상품을 구매하고자 했는데이 가격이 정말 가장 좋은 가격일까? SmallWebRetailer.com이 가짜 사이트는 아닐까? 돈만 받고 사이트가 사라지는 것은 아닐까? 마지막 구매 버튼을 누르기 전 몇 분간 고민하다가 WellKnown.com 사이트에서 30 퍼센트 비싼 가격으로 구매했는데 이는 SmallWebRetailer.com을 믿지 못했기 때문으로 신용카드사에 확인하거나 사기로 인한 환불 등 불필요한 시간을 낭비하고 싶지 않음
-
상품이 도착해 구매를 확정하기 전까지 판매자가 당신이 지불한 금액에 접근할 수 없도록 보증하는데 이 보증이 판매자 나 특정한 제3자에 의해 이루어지지 않고 수많은 독립적인 참여자에 의해서 이루어지고 누구나 검증할 수 있는 소프트웨어 위에 코딩된 규칙에 따라 거래를 검증하는 플랫폼에서 수행되도록 하는 것이 탈 중앙화(Decentralized)라고 하면 이러한 탈 중앙화 애플리케이션을 Decentralized Application 이라고 하면 동작 원리를 Smart Contract 라고 함
-
탈 중앙화 애플리케이션은 상업 거래, 행정 절차. 공급망 등 고객과 공급자 또는 사용자와 공급자 사이에 신뢰가 필요한 모든 시스템의 투명성을 높이기 위한 웹 애플리케이션의 새로운 변화 중 하나
-
디앱의 목적은 시스템 상호작용에서 참여자 간 신뢰 필요성을 최소화하거나 제거하는 것
-
웹 2.0이 제공한 것 이상으로 사용자에게 권한을 부여하는 것을 목표로 하기 때문에 디앱이 웹 3.0의 중추가 될 수 있다고 함
◆ Dapp
▶ 중앙화 앱
-
개인, 회사, 기관, 정부와 같이 단일하거나 중앙화된 주체가 제어하는데 주체들은 자체 시스템이나 서비스 업체 또는 클라우드 제공업체를 통해 시스템을 직접 운영하면서 시스템 아키텍처의 모든 구성 요소와 계층을 완벽하게 제어할 수 있기 때문에 사용자는 이러한 주체들이 선의로 운영할 것을 믿고 이들의 평판에 따라 해당 시스템을 이용할 것인지 결정
-
사용자 관점에서 시스템은 신뢰할 수 있거나 없는 것으로 나눔
▶ 탈 중앙화 앱의 장점
-
긍정적인 거래 조건: 거래와 관련된 모든 조건을 만족시키는 경우에만 거래가 완료
-
거래 실행 및 검증의 독립성: 애플리케이션을 지원하는 판매자 나 제3자가 아닌 플랫폼의 참여자 중 한 명이 거래를 진행시키고 다른 참여자들은 독립적으로 해당 거래를 검증하는 작업을 진행하고 모든 참여자가 검증 작업에 동의하는 과정을 합의라고 하는데 이 작업이 약속된 거래 조건이 수행되고 검증될 것임을 다시 한 번 확인 시켜줌
-
투명성: 거래를 처리하는 코드를 확인하고 금액을 이체하기 전에 지정된 조건을 준수하고 있는지 확인할 수 있음
▶ 탈 중앙화 앱 과 중앙화 앱 – 전자 투표
▷ 중앙화 된 투표 앱
-
전통적인 중앙화 된 투표 앱은 일반적으로 주주 투표를 촉진하기 위해 회사에서 사용하거나 제안한 법안의 승인 또는 선택을 원활하게 하기 위해 지자체나 중앙 정부에서 사용하는데 각 기관은 적어도 투표 기간에는 사용 중인 투표 앱을 직간접적으로 소유하고 있음
-
중앙화 된 투표 앱은 중앙 데이터베이스에 연결된 하나 이상의 앱 서버에서 실행되며 이 시스템은 투표 웹사이트를 호스팅하는 하나 이상의 웹 서버를 통해 유권자에게 노출되고 이때 기관은 사내 또는 클라우드에서 직접 호스팅되는 웹, 앱 및 데이터베이스 서버를 소유할 수 있음
-
기관 내부 시스템에 투표 시스템을 구축했지만 클라우드 호스팅 업체를 통해 호스팅(Infrastructure as a Service - IaaS)을 할 수도 있고 선거 기간에만 외부 공급업체의 투표 시스템을 빌려 클라우드 앱 공급업체를 통해 구현되는 경우(Software as a Servicc - SaaS)도 있는데 이러한 구조는 유권자 입장에서 봤을 때 신뢰와 보안에 문제에 잠재적 우려가 생길 수 있음
-
신뢰 문제: 기업과 정부 차원에서 일어난 모든 재정 및 회계 스캔들을 생각해보면 주주나 시민으로서 해당 기관을 완전히 믿지 못하는 것은 당연해 보이는데 어떤 방식으로든 투표 결과가 조작될 수 있다고 의심을 품을지도 모르는데 전자 투표 앱의 악의적인 개발자 또는 관리자가 이해 관계자들과 공모하여 시스템의 주요 부분에 접근하여 투표의 수집, 처리. 저장 등 각 단계에서 조작할 수 있다고 상상할 수 있으며 투표 앱이 어떻게 설계 되었느냐에 따라 악의적인 데이터베이스 관리자가 투표 결과를 바꿀 가능성도 있음
-
보안 문제: 중앙화된 투표 앱으로 투표할 때 선거를 진행하는 회사 또는 기관의 진정성 뿐 만 아니라 투표 시스템이 외부 공격에 적절하게 대처하고 있는지에 대해서도 걱정할 수 있는데 예를 들어 외부의 누군가가 투표를 특정 방식으로 진행하고 시스템을 해킹하여 원하는 결과를 얻으려고 할 수 도 있는데 중앙화된 투표 앱은 몇 개의 서버를 통해 네트워크를 구성하며 각 서버는 일반적으로 하나의 기능만 제공하는데 이는 서비스 처리 관점에서 보거나 보안 관점에서 볼 때 단일 장애 지점이 되며 해커가 웹 서버의 코드를 변경하여 특정 계층에서 표를 가로채고 수정한다면 전체 시스템이 손상될 수 있으며 애플리케이션 서버, 더 나아가 데이터베이스 서버만 해킹돼도 같은 결과를 얻을 수 있어서 중앙화된 시스템은 한 부분에서 보안이 무너지면 전체 시스템의 보안이 무너짐
● 핵심 기술 원칙
-
P2P(Peer-to-Peer) 네트워크 각 서버에서 독립적으로 존재하고 실헹
-
Block Chain 이라는 기술을 통해 데이터를 소급 수정하지 못하도록 보장
● 탈중앙화 투표 앱을 사용하면 이론적으로 서로 다른 참여자가 소유한 많은 서버로 구성된 네트워크상에서 투표 앱이 복제되어 실행되는데 이는 기존의 신뢰 문제와 보안 위협을 무의미하게 만들 수 있음
● P2P 네트워크가 주는 Dapp 의 신뢰 와 보안
-
하나의 서버 대신 다른 참여자들이 소유한 여러 서버에 의해 독립적으로 투표가 처리되고 검증된 후 하나의 데이터베이스가 아닌 수많은 데이터베이스에 저장된다고 생각하면 신뢰와 보안에 대한 걱정을 덜 수 있음
-
신뢰: 참여자 중 한 명이 악의적으로 투표를 변경하고 수정된 투표를 네트워크에 전파하려고 시도하면 다른 참여 자들이 해당 투표를 검증할 때 수정된 것으로 감지하여 거부하며 다른 참여자들은 자신의 데이터베이스에 이 정보를 저장하지 않고 변경된 투표를 네트워크 전체에 전파하지 않으므로 악의적인 공격은 의미가 없어짐
-
보안: 해커는 중앙화된 시스템보다 탈중앙화된 시스템에서 투표를 변경하는 것이 훨씬 어려운데 해커가 하나의 서버에서 투표를 수정하는 데 성공하거나 또는 탈중앙화 앱에서 쉽게 조작하기 위해 특정 서버를 직접 호스팅하더라도 다른 참여자들이 조작된 표를 발견하고 거부하기 때문에 성공적으로 해킹하기 위해서는 과반수의 네트워크 노드가 전체 네트워크 상태를 결정한다면 하나의 서버가 아니라 네트워크 노드의 51 퍼센트 이상을 동시에 조작해야만 가능하므로 수천여 개의 서버로 구성된 네트워크의 과반수를 해킹하기란 거의 불가능한 일이며 각각의 노드가 서로 다른 참여자에 의해 관리되는 경우는 더욱 어려운데 각각의 노드는 각기 다른 방식으로 해킹 위협에 대한 방어책을 세웠을 수도 있음
▶ 이더리움 기반의 Dapp 의 구조
● 클라이언트: 웹 애플리케이션으로 Web3.js 라는 클라이언트 측 자바스크립트 라이브러리를 통해 네트워크의 특정 서버와 직접 통신
● 서버: P2P 네트워크
▶ 이더리움 네트워크: 블록체인 플랫폼을 지원하는 P2P 네트워크
→ 공통 클라이언트 인터페이스를 노출하고 Wire 라는 P2P 프로토콜을 통해 통신하는데 네트워크를 통해 투표 내역과 같은 거래 내역(Transaction) 이나 투표 내역이 쌓여 있는 Block 데이터를 표준화된 방식으로 전송
→ C++ 부터 Go 까지 다양한 프로그래밍 언어로 작성되지만 모두 표준 클라이언트 인터페이스 와 와이어 프로토콜을 사용하므로 원활하게 상호 작용
→ 이더리움 노드 클라이언트의 이점은 비트코인 노드와 마찬가지로 암호 화폐 거래 내역 및 블록을 네트워크에 전파할 수 있을 뿐만 아니라 블록체인 데이터베이스에서 호스팅되는 애플리케이션 코드를 실행할 수 있다는 것인데 이러한 관점에서 이더리움과 같은 플랫폼을 프로그램 블록체인 이라고 함
→ 탈중앙화 앱의 코드는 스마트 컨트랙트로 구성되는데 객체 지향 언어에서 대부분 클래스를 통해 로직이나 상태를 캡슐화하어 수행하는 것과 비슷
→ 탈중앙화 투표 앱은 이더리움 블록체인에서 수행되는 다양한 스마트 컨트랙트로 구성
▶ 이더리움 네트워크: 블록체인 플랫폼을 지원하는 P2P 네트워크
▶ 네트워크 노드의 역활
→ 전체 노드(full node)
⊙ 대부분의 노드는 기본적으로 거래내역을 수동으로 처리
⊙ 블록체인 데이터베이스에서 읽어올 수는 있지만 새로운 블록을 생성할 수는 없지만 피어 노드에서 받은 블록을 자신의 로컬 블록체인에 추가할 수 있으며 피어 노드로부터 받은 블록체인 블록의 정확성을 검증하기 위해서만 거래를 실행v
⊙ 투표 앱의 경우 전체 노드는 동료로부터 받은 투표 내역을 다른 동료에게 전파하며 받은 블록이 올바른지 검증하고 투표 디앱 스마트 컨트랙트를 실행하여 투표 내역을 포함
⊙ 새로운 블록에 투표 내역을 저장하지 않음
→ 채굴 노드(mining node)
⊙ 일부 노드는 거래내역을 적극적으로 처리
⊙ 거래 내역을 모아서 새로운 블록에 저장
⊙ 이더리움 플랫폼에서 지원하는 암호 화폐인 이더를 보상 받기 위해 계산량이 많고 에너지가 많이 소요되는 작업을 수행
⊙ 생성된 블록을 나머지 P2P 네트워크에 전파하는데 이러한 노드가 채굴 노드
⊙ 새로운 블록을 블록체인에 추가하고 암호화폐를 보상으로 받는 과정이 채굴
⊙ 투표 디앱의 경우 채굴 노드는 피어 노드에서 받은 투표 내역을 모아 블록을 생성하고 생성된 블록을 블록체인에 추가하고 피어 노드를 통해 블록을 전파
'IT 초보코딩의 세계 > 블록체인' 카테고리의 다른 글
블록체인 Solidity(이더리움 가상 머신, 계약 방법, 계약 구성요소 ) 1장 (2) | 2023.08.29 |
---|---|
블록체인 탈중앙화 앱(네트워크 컨트랙트, 메타 마스크 설정) 4장 (0) | 2023.08.16 |
블록체인 탈중앙화 앱(리믹스 솔리디티를 이용한 Dapp 구현) 3장 (1) | 2023.06.28 |
블록체인이란?(블록체인과 이더리움 아키텍쳐) 2장 (8) | 2023.06.08 |
블록체인이란?(블록체인과 분산원장 기술, 거래과정, 특징) 1장 (8) | 2023.06.07 |
댓글