1. 탭 루트(Tap root), 슈노르 서명
1.1. 탭 루트
- 정의 : 비트코인의 스크립트를 개선하여 프라이버시를 향상시키고 복잡한 트랜잭션과 관련된 요소를 개선하기 위한 소프트 포크
- 등장배경
- 비트코인의 확장성과 더불어 프라이버시 보안 강화를 위해 생겨남
- 속한 기술 : 슈노르 서명
- 장점
- 전송 데이터 감소
- 블록당 더 많은 트랜잭션 처리 가능
- 수수료 줄어듬
- 프라이버시 기능 향상
- 서명을 더이상 변경할 수 없다.
- 스마트 컨트랙 지원
1.2. 슈노르 서명
- 정의 : 비트코인 트랜잭션 내에 다수의 키를 포함할 수 있고 단일하고 고유한 서명을 만들수 있다.
- 예를들어 하나의 금고를 열수 있는 10개의 키가 있는데 10개의 키는 부피를 많이 차지하니 하나의 키로 만들자라는 취지에서 만들어짐
- 용량이 줄어 블록에 더 많은 정보를 담게할 수 있음 (속도가 빨라짐)
2. SPV, 블룸필터
2.1. SPV
- SPV(Simplified Payment Verification)
- 전체 블록을 다운받지 않고 특정 거래를 검증 (블록 헤더만 다운로드)
- 해당 거래의 머클 경로를 검증함으로써 거래가 해당 블록에 있음을 증명
- 문제점
- 특정 거래가 존재하는것은 검증가능하나, 특정 거래가 존재하지 않는다는것은 검증 불가
- 이중지불에 취약
- DoS 공격에 취약
- 사생활 침해의 문제
- SPV노드는 자신과 연결된 풀 노드에게 블록헤더와 자신이 필요한 거래 내역을 요청
- 거래를 요청하는 과정에서 나의주소가 드러나 사생활 침해의 우려가 있음
- 블룸필터로 사생활 침해의 문제를 해결
2.2. 블룸필터
- 블룸필터 (확률적 검색 필터)
- 찾는 정보가 무엇인지 정확히 명시하지 않고도 원하는 패턴에 부합하는 정보를 찾을 수 있도록 함
- SPV노드의 원하는 거래의 모든 정보를 공개하지 않으면서 해당 거래를 찾을 수 있도록 해줌
3. DAG(Directed Acyclic Graph)
- DAG(방향성 비순환 그래프) : 한 트랜잭션이 다음 트랜잭션을 증명해 주는 방식
- DAG는 블록체인이 아님!!!
- 특징
- 블록체인에 적용하게 되면 블록체인의 3.0세대라고 불리고 있음
- 트랜잭션들이 서로를 참조해서 유효성을 검증
- 장점
- 블록 생성 없이 트랜잭션이 다음 트랜잭션을 검증하기 때문에 속도가 빠르다.(채굴자의 승인 불필요)
- PoW방식이 아니기 때문에 수수료가 없다
- 용량을 정해놓지 않았기 때문에 확장성 문제에서 자유롭다.
4. DHT(Distirbuted Hash Table)
- DHT(분산 해시 테이블)
- 정의 : 해시 테이블을 활용해, 키-값 쌍 방식으로 데이터를 검색하는 자료구조
- 해시 테이블과 차이점
- 해시 테이블 : KEY-VALUE
- 분산 해시 테이블 : KEY(파일명) - VALUE(위치)
- 특징
- (장점) 분산해시테이블은 분산화라는 장점이 있어서 네트워크의 부하를 억제하면서 콘텐츠를 빠르고 정확히 검색할 수 있는 장점이 있습니다.
- (단점) 그러나 실질적으로 구현하는데 어려움
- 적용
5. IPFS
- IPFS(InterPlanetary File System)
- 분산형 파일시스템에 데이텅를 저장하고 인터넷으로 공유하기 위한 프로토콜
- P2P(peer-to-peer) 네트워크 (토렌트)
- 전 세계 여러 컴퓨터에 분산저장된 데이터조각을 가져온 후 하나로 합쳐서 보여주는 방식
- IPFS사용 시 해당 컴퓨터는 필요한 파일 다운로드 동시에 파일을 나누어주는 역할을 함(p2p)
- 방식
- 파일의 크기를 256kb단위로 쪼개어 여러개의 IPFS개체에 저장
- 쪼개진 개체들의 링크만 담은 IPFS개체가 시스템에서 만들어짐 (쪼개진걸 하나로 합침)
- 단점
- 피어들이 없으면 유지할 수 없음(그래서 만들어진게 파일코인)
6. 프루닝
- 정의 : 인공 지능 분야에서 검색 모델을 학습한 후에 불필요하거나 중요도가 낮은 노드 등을 제거하는 기술
6.1. 비트코인 프루닝
- 비트코인 프루닝을 해야하는 이유(실제 가지치기를 해야하는 시기에 대입한 비트코인 프루닝)
- Case1) 죽거나 시든 가지가 보일 때 : 죽은 가지는 안으로 썩어들어가서
- In Bitcoin)
비트코인 노드가 블록체인의 사본을 보관하고 네트워크를 실행할 때 하나의 문제가 생기면 많은 스토리지를 낭비하게 된다. 이로인해서 디스크 공간 차지, 느린 인터넷 연결 속도, 그로 인해 많은 사람이 노드를 소유할 수 없게 만듬
- Case2) 너무 쑥쑥 자라거나 웃자랄 때 : 화분의 크기는 정해져 있는데, 너무 커지지 않게 하기 위해서
- In Bitcoin)
2009년 부터 지금까지 ‘블록체인 크기의 가속화된 성장’으로 인해 프루닝 기술이 필요한 상황
- Case3) 겹치는 잎이 많아질 때 : 겹치면 햇빛을 받지못하는 가지가 생김
- In Bitcoin)
블록체인의 전체를 저장하는 것은 사용처에 따라서 비효율적인 부분이 있다.
- 비트코인 프루닝 방법
- ‘블록 파일 프루닝'이라고 해서 작은 버전의 ‘풀 블록체인'을 실행 할 수 있도록 만들었다.
6.2. 이더리움 프루닝
- 이더리움 프루닝을 해야하는 이유
- 이더리움에는 계정들이 모여있는 글로벌 상태라는 거대한 데이터 구조가 있는데, 이 계정들이 2억개가 넘어가면서 과부하가 온다.
- 이더리움 프루닝 방법
- 머클 패트리샤 트리(상태전이 일반 머클 확장 패트리샤 트리)
- 기존의 노드 중에서 안쓰는 노드를 재활용하는 등의 새로 삽입되는 노드의 수를 최소화
- 스테이트 트리 프루닝(메인넷 적용x)
- 캐시에 저장된 노드와 DB에 저장된 노드를 선별하여 프루닝(삭제) 진행
- Fast Sync(현재)
- 이더리움 프루닝 한계
- 사용자 계정을 지운다는 것은 어려움.
- 프로그램의 비정상 종료로 인해 스테이트 트리가 비정상적인 상태가 되면 복구할 방법이 없음 → 결국 이 방법(스테이트 트리 프루닝)은 메인넷에 적용x