[블록체인] 3주차_블록체인과 소프트웨어 기술
이 내용은 K-MOOC 알기쉬운블록체인 강의를 듣고 정리한 내용입니다.
블록체인과 소프트웨어 기술
소프트웨어 시스템 측면에서 본 블록체인
1. 블록체인은 해킹이 불가능하다?
- 정보가 모든 사용자들 PC에 분산되어 저장된 블록체인은 해킹이 어렵다.
전문가들은 블록체인을 기반으로 한 가상화폐를 해킹하는 것은 불가능하며, 만약 해킹을 했다고 해도 가상화폐를 현금화할 수 없을 것이라고 예상했다.
- 그러나 해커들에 의해 수천억 규모의 가상화폐가 현금화되어 사라지는 사건 발생: 코인거래소 해킹
- 원래 가상화폐는 개인 사용자가 가진 전자지갑을 서로 연결한 형태로 분산하여 관리 및 거래가 이루어지기 때문에 해커가 코인에 접근하기 어렵다.
- 하지만 가상화폐 거래소: 운영 비용 및 효율을 위해 중앙 큰 지갑에 모든 사용자들의 코인을 넣고 거래함
- 결론: 블록체인 기술은 분산을 통해 안전성을 추구하는 기술인데 거래소가 중앙 집중적인 시스템으로 운영했기 때문에 문제 발생 = 즉 소프트웨어 시스템이 중요하다.
소프트웨어 시스템 계층과 측면
1. 소프트웨어 시스템 구분 기준: 계층과 측면
- 계층 (Layer)
- 사용자의 요구사항, 혹은 목적
- 이를 달성하기 위한 시스템의 기술 구조
- 측면 (Aspect)
- 시스템이 무엇을 하는가
- 시스템이 그것을 어떻게 달성하는가
2. 계층 - 응용 계층 / 구현 계층
계층명 | 내용 | 예시 |
---|---|---|
응용계층 (Application~) | 사용자의 필요성, 목적 | 기차 예약, 온라인 구매 등 |
구현계층 (Implementation~) | 목적 달성을 위한 기술 | 데이터 통신 기술 등 |
3. 측면 - 기능적 측면 / 비기능적 측면
측면 | 내용 | 예시 |
---|---|---|
기능적 측면 (Function~) | 사용자가 경험하는 기능 | 사진 촬영, 전화걸기, 이메일 보내기 등 |
비기능적 측면 (Non-function) | 사용자가 직접 느끼지 않지만 잘 기능하는 데 필수적인 부분 | 적은 에너지소모, 안전성, 사용자친화적 UI, 보안, 무결성 등 |
4. 사용자 관점에서 소프트웨어 시스템을 계층과 측면으로 분리
- 응용계층/기능적 측면
- 사용자가 명확하게 요구하는 것
- 시스템에서 가장 중요하게 부각됨
- 그러나 이런 요소들은 대부분 사용자들이 스스로 학습하려는 노력 함
- 구현계층/비기능적 측면
- 사용자 입장에서 눈에 보이지 않고 이해하기도 힘듦
- 당연하게 여김
- 하지만 소프트웨어 개발하는 입장에서는 시스템이 잘 동작하게 하는 가장 중요한 요소
5. 비기능적 측면: 보안과 무결성
- 보안 (Security), 무결성 (integrity)
- 무결성(integrity)이란? 시스템이 의도한 대로 동작할 수 있도록 만들기 위한 요구사항 및 그렇게 하도록 하는 기술
- 블록체인의 보안 요구사항에 있어 가장 중요한 요소는 무결성이다.
소프트웨어 시스템 무결성
1. 정보 보안의 세 가지 요구사항
- 기밀성 (Confidentiality)
- 프라이버시, 사생활 보호와 관련
- 합법적인 권한이 있는 사용자만 데이터에 접근이 가능해야 한다.
- 가용성 (Availability)
- 권한이 있다면 언제 어디서나 사용자가 원할 때 정보에 접근해서 서비스를 받을 수 있어야 한다.
- 권한이 있다면 언제 어디서나 사용자가 원할 때 정보에 접근해서 서비스를 받을 수 있어야 한다.
- 무결성 (Integrity)
- 정보나 데이터, 소프트웨어 시스템이 원래 의도한 대로 정확하게 동작해야 한다
- 원래 오리지널 데이터와 같음을 보장해야 한다.
- 기밀성, 가용성 등 다른 보안 요소보다 블록체인과 더 밀접하게 연관되어있다.
2. 무결성의 세 가지 요소
- 데이터 무결성 (Data Integrity)
- 저장된 데이터가 원래 데이터와 정확히 일치해야 한다
- 외부 공격이나 시스템 오류로 인해 데이터 위조, 변조, 삭제 시 그런 것을 쉽게 탐지하고 복구할 수 있다.
- 침해) 외부 공격이나 사고로 인한 데이터 삭제, 위조
- 연산 무결성 (Computation Integrity)
- 소프트웨어 시스템이 데이터를 이용해 특정 연산, 처리를 할 때 그 결과를 신뢰할 수 있다
- 오류 없이 정확한 결과를 산출한다.
- 침해) SQL select문 등으로 데이터를 쿼리하려고 했는데 연산이 잘못되어 잘못된 결과를 받는 경우
- 작동 무결성 (Function Integrity)
- 소프트웨어 시스템이 의도한 대로 동작한다
- 논리적인 오류가 없다
- 침해) 앱을 실행했는데 갑자기 꺼지는 경우
소프트웨어 아키텍처 측면에서의 블록체인
소프트웨어 시스템 아키텍쳐
1. 소프트웨어 아키텍처(Software Architecture)란?
- 정의: 소프트웨어 구성요소를 구조화하고, 구성요소 간 관계를 설정하는 방식
- 아키텍처가 소프트웨어 시스템의 성능(performance)과 안정성(stability), 응용분야 안전성(safety), 그리고 개발 및 유지비용에 영향 주기 때문에 신중하게 개발해야 한다.
- 안정성과 안전성: 안정성과안전성 참고
- 안정성(stability): 바뀌어 달라지지 않고 일정한 상태를 유지하는 성질
- 안전성(safety): 위험이 없거나 안전을 보장하는 성질
2. 결제 시스템의 계층과 측면
- 기능적 측면(사용자의 요구사항)과 비기능적 측면의 요구사항을 전부 구현하기 위해 필요한 구현 기술은?
- 예시) 자동차 구매 시 디젤 엔진, 가솔린 엔진, 하이브리드 시스템 등 여러 엔진 중 하나 고를 수 있다.
- 사용하는 엔진 종류에 따라 유지비용이나 성능 등이 차이가 있을 것이다.
- 이러한 엔진에 해당하는 것이 시스템 아키텍처
3. 시스템 아키텍처의 종류: 중앙통제방식 vs 분산방식
- 각각의 점 = 노드: 시스템을 구성하는 하나의 요소로 실제 시스템을 사용하는 사용자 혹은 개별 컴퓨터
- 노드를 잇는 선: 각 노드 간 네트워크 연결성
- 블록체인은 분산 시스템과 더 밀접한 연관이 있다
- 중앙통제방식(Central Control)
- 모든 노드들이 중앙의 하나의 노드로 연결됨
- 중앙 노드가 모든 노드들을 직접 관리한다.
- 분산 방식(Distributed)
- 모든 노드와 연결되고 통제하는 중앙 노드가 없다.
- 각 노드들은 직, 간접적으로 연결되어 통신한다.
- 각 노드들은 몇 번의 네트워크 통신을 통해 간접적으로 연결된다.
분산 시스템의 장점과 단점
1. 분산 시스템의 장점
- 더 강력한 계산(Computing) 능력
- 서로 연결된 여러 컴퓨터의 계산 능력이 합쳐져서 동작
- 단위 시스템보다 훨씬 강력한 계산 능력
- 비용 절감
- 초기비용은 개별 컴퓨터보다 많이 듦: 다수의 컴퓨터 필요
- 하지만 분산 시스템과 동일한 성능을 가진 슈퍼컴퓨터 한 대를 제작한다고 가정했을 때 그 한 대를 유지, 운영하는 비용보다 저렴
- 분산 시스템의 경우 일부 컴퓨터가 고장나도 그 부분만 교체하면 되는데, 중앙통제 방식의 경우 해당 슈퍼컴퓨터 전체를 교체해야 해서 유지보수 비용이 더 많이 든다.
- 더 안정적(stable)이다.
- 안정성(stability): 바뀌어 달라지지 않고 일정한 상태를 유지하는 성질 / 항상 동일한, 비슷한 수준의 서비스 계속 제공할 수 있다.
- 분산 시스템의 일부 컴퓨터가 고장나도 전체 네트워크 시스템에 영향주지 않음
- 다른 노드들이 고장난 시스템의 일 분담 가능
- 확장성, 유연함
- 분산 시스템의 계산 능력 = 각 노드의 개별 계산 능력의 합
- 따라서 시스템에 새로운 컴퓨터들 추가하면 그만큼 계산능력 쉽게 높일 수 있다.
2. 분산 시스템의 단점
- 구성 요소를 조정하는 중앙 요소의 부재
- 전체적인 분산 시스템 조정이 필요할 경우: 조정하는 중앙 노드가 따로 없어서 조정을 위해 서로 계산하는 과정이 필요하다.
- Coordination Overhead: 시스템 조정으로 인한 추가자원, 오버헤드 발생
- 오버헤드(Overhead): 어떤 처리를 하기 위해 들어가는 간접적인 처리시간, 메모리 등(자원). 예를 들어 A라는 처리를 단순하게 실행한다면 10초 걸리는데, 안전성을 고려하고 부가적인 B라는 처리를 추가한 결과 처리시간이 15초 걸렸다면, 오버헤드는 5초가 된다.
- 조정하기 위해 각 노드 간 네트워크 통신 추가로 발생
- 계산 능력 일부가 통신 프로토콜을 지원한다거나 메시지 송, 수신하기 위한 연산, 처리 등에 사용됨
- 통신 오버헤드 발생
- 네트워크에 대한 의존도가 높다.
- 분산 시스템의 모든 노드들은 네트워크를 통해 서로 통신한다.
- 특히 중앙통제 노드가 없어서 다른 노드와 통신하기 위해 여러 번의 네트워크 채널을 통해 통신 서로 주고 받아야 한다.
- 프로그램이 복잡해진다.
- 중앙통제 시스템: 시스템 조정 오버헤드, 통신 오버헤드 등을 고려하지 않아도 됨
- 분산 시스템의 문제를 해결하기 위해 시스템 자체가 훨신 복잡해진다.
- 보안 문제
- 중앙에서 보안을 책임지고 통제하는 시스템 없음
- 따라서 전체 분산 시스템에 악의적인 컴퓨터가 몇 대 들어와서 공격을 시도하는 경우, 중앙에서 컨트롤하고 막아주는 보안 메커니즘 만들기가 어렵다.
- 시스템의 각 노드들이 보안 위협에 대해 직접적인 책임과 대응 할 수 있도록 신경써야 한다.
게시판 질문: 분산 시스템이 중앙통제 시스템에 비해 무결성을 보장하기 더 어려운 이유는 무엇일까?
분산 시스템은 네트워크 의존도가 높은데 일부 컴퓨터의 네트워크 상황이 좋지 않아 의도한 대로 계산을 처리하지 못하는 경우, 해당 노드를 확인하고 다시 업데이트 해 주어야 하는 문제가 있다. 이 때 중앙에서 모든 요소를 통제하는 요소가 없기 때문에 각 노드가 무결성을 유지하고 있는지 확인하고 맞게 맞춰주는 것 자체에 오버헤드가 발생할 것이다. 두번째로 기준이 되어 줄 중앙 노드가 없는 것도 무결성을 보장하기 더 힘들게 할 것 같다.
블록체인의 목적
1. P2P(Peer to Peer) 네트워크
- 분산 시스템의 특별한 형태
- 중앙 통제 시스템 없이 네트워크를 구성하는 모든 노드들이 서로 협의를 통해 분산화된 방식으로 시스템 운영하는 네트워크
- 각 컴퓨터들이 자원 공유: 계산 처리능력(computational processing capacity), 저장 공간(storage space), 데이터(data), 네트워크 대역폭(network bandwidth) 등
- 서로 자원 제공하고 다른 컴퓨터의 자원을 활용할 수도 있다.
- 따라서 P2P 네트워크의 컴퓨터는 서비스의 공급자이자 동시에 서비스의 소비자
- P2P 네트워크 사용자가 많아질수록 시스템이 더 강력해지고 안정적이게 된다.
- 응용 사례: 파일 공유, 콘텐츠 공유, 보안 정책 공유, 블록체인 등
2. 혼합 시스템(Hybrid System)
- 중앙 통제 시스템 안에 분산 시스템을 넣거나, 분산 시스템 안에 중앙 통제 시스템 넣을 수 있다.
- 구별 기준: 전체 시스템을 끄고 킬 수 있는 통제 요소가 존재하는가?
- 전체 시스템(DB, 유저 아이디, 비밀번호, 로그인, 로그아웃 등의 기능)을 한 번에 통제하는 요소가 있으면 중앙 통제 시스템, 아니면 분산 시스템이다.
- P2P 네트워크는 분산 시스템이라 모든 노드를 한 번에 통제할 수 없다.
3. 소프트웨어 구현 계층의 기능적 측면: 아키텍처
- ?: 소프트웨어 아키텍처 종류가 들어간다. (중앙 통제 시스템 혹은 분산 시스템)
- 두 방식은 시스템의 무결성을 보장하는 방식이 서로 다르다.
- 블록체인은 분산 시스템의 무결성을 보장하는 하나의 기술이다.
- 즉 블록체인은 구현 계층의 비기능적 측면을 성취하게 하는 기능(도구)라고 볼 수 있다.
P2P 네트워크 시스템
P2P 시스템 정의
1. P2P 시스템으로 바뀐 음악 산업 예시
- 과거의 음악시장
- 음악가가 음반 제작사(Studio)와 계약을 한다.
- 음반 제작사가 음악을 녹음한다.
- LP, 카세트 테이프, CD 등 여러 실물 매체에 담는다.
- 백화점 등 오프라인 매장에서 판매한다.
- 음반 제작사가 음악가와 음악을 원하는 사람 사이 중개자 역할
- 음반 제작사가 음반 제작 관련 지식 및 기술 독점
- 2000년대 이후 ‘넵스터(Nepster)’ 프로그램 (P2P 네트워크)
- 음악의 디지털화
- 녹음 장비 구축 및 음악 녹음에 드는 비용 현저히 감소
- 개인 PC의 보급과 인터넷의 확산
- 음악가 개인이 녹음해서 인터넷으로 사용자에게 배포->음반 제작사가 필요없게 되었다.
- Nepster 프로그램: CD를 사지 않아도 P2P 네트워크를 통해 전 세계에 음악을 공유할 수 있게 되었다.
- Nepster 프로그램의 핵심 아이디어는?
- 과거 음반 제작사처럼 핵심 기술 및 노하우를 독점하는 중앙의 요소 사라짐
- 그 대신 개인들 간 상호작용으로 대체됨
- P2P 시스템으로 인한 구조 변화가 예상되는 산업?
- 중앙의 일부 조직이 산업의 핵심 기술을 독점하고 있는 경우
- 무형의(intangible) 상품, 디지털화된 상품, 서비스 중개 사업
- 디지털 자료를 복사하고 전송하는 비용 및 데이터(자원) 매우 낮아짐
- 그 중 규모가 가장 큰 것: 금융 산업
2. 금융 산업에서 P2P 네트워크
- 현재 구조
- 신용카드, 계좌에 찍힌 돈은 이미 오래 전부터 실물이 아닌 디지털 데이터로 저장되어 있다.
- 실제로 시장에 유통되는 유형의(tangible) 지폐, 동전은 전체 자금의 일부일 뿐
- 몇몇 은행이 중앙 통제 기관이 되어 무형의 데이터를 관리한다. (중앙통제방식)
- 은행을 포함한 금융회사들은 생산자와 소비자 간 중개자 역할만을 수행
- 모든 거래는 중앙 기관(은행)을 통해서 이루어진다.
- 국가 간 거래라면 중개 기관을 5개 이상 거쳐야 하며, 중개 기관을 지날 때마다 매번 수수료를 지불한다.
- P2P 시스템 적용 시
- 금융 거래 시 중개 기관을 거치지 않고 거래 당사자들 간 직접 거래 가능
- 절차 간편, 속도 빠름
- 거래 수수료 절감
- 중개 기관이 끼지 않아 더 신뢰성있고 안정적이다.
3. 그 외 P2P 활용 분야
- 출생신고, 여권, 운전면허증, 주민등록증, 예금, 학위증명서, 대출, 보험, 노동계약서, 특허권 등
- 무형의 (intangible), 디지털화된(digitalized) 상품 혹은 서비스 중개 사업
4. P2P 시스템 정의
- 각각의 개인 PC가 시스템의 노드가 되는 분산 시스템의 일종
- 각 노드는 서로의 계산 능력(computing power), 저장 공간, 네트워크 대역폭(network bandwidth)등의 자원을 공유한다.
- 기본적으로 각 노드는 서로 동등한 권리와 역할을 갖는다.
- 각 노드는 자원의 공급자(supplier)이자 소비자(consumer)가 된다.
- P2P 파일 공유 시스템 예시
- 개인 Pc에 저장된 파일은 시스템의 다른 유저와 공유한다
- 누군가 파일을 다운로드하기 시작하면, 다른 컴퓨터들에 저장된 파일에서 다운로드한다.
P2P 시스템 아키텍처
1. P2P의 혼합 시스템 (분산 + 중앙통제)
- 순수 분산 P2P 네트워크: 각 노드가 자원을 공유하고 시스템에 분배 가능
- 중앙 통제 요소가 있는 경우: 혼합 방식(Hybrid System)
- 다른 노드들 사이를 중재
- 노드 검색, 식별 기능
- 중앙 통제 방식과 분산 방식의 장점을 가지고 있다.
- 예시) Nepster: 모든 노래의 정보가 중앙 DB에 저장된다.
P2P 시스템과 블록체인의 연관성
1. P2P 시스템의 무결성(integrity)를 보장하는 도구, 블록체인
- 블록체인 = P2P 분산 시스템의 무결성을 보장하는 도구
- P2P 네트워크의 장점 활용 가능
- 탈중개화(de-intermediated)를 통한 상업적 잠재력: 순수 분산 방식의 P2P 네트워크 구현 가능
댓글남기기