책과 구글링, 백서 등을 읽으며 작성중.. 많이 미흡함
확장성(Scalability) : 사용자 수가 늘어나더라도, 유연하게 대응할 수 있는 정도를 나타냅니다. 확장성이 높으면 사용자수의 증가에 따라 거래건수가 늘어나더라도, 무리없이 전송 처리용량을 증가시킬 수 있습니다. TPS(Transaction Per Second)가 높다고도 표현합니다.
탈중앙화(Decentralization) : 중앙집권화를 벗어나 분산된 소규모 단위가 모여, 자율적으로 운영되는 방식을 말합니다. 블록체인은 기존의 서버-클라이언트 관계가 아니라, 개별 노드들의 자발적이고 자율적인 연결에 의해 P2P(Peer-to-Peer) 방식으로 동작합니다.
보안(Security) : 블록체인 내의 데이터나 프로그램을 권한이 없는 이용자가 사용할 수 없도록 하는 제한, 외부의 공격으로부터 프로그램을 보호합니다.
확장성은 더 많은 거래량을 수용할 수 있는 블록체인의 능력입니다.
보안은 블록체인에 저장된 데이터를 다른 공격으로부터 보호하거나 이중 지출에 대한 블록체인의 방어 기능입니다.
탈중앙화는 더 적은 수의 엔티티가 네트워크를 제어하지 않도록 하는 네트워크의 중복성입니다.
input 의 구조 :
Prev. Tx ID, TxIndex: 해제하고자 하는 이전의 출력을 가리키는 포인터
ScriptSig: 이전의 출력을 해제하는 키
output 의 구조 :
ScriptPubkey: 잠금. ScriptPubkey의 소유자(해당 공개키의 소유자)만이 ScriptSig를 만들 수 있습니다.
Amount: 잠긴 비트코인의 양(단위:사토시)
노드는 피어로부터 트랜잭션을 받으면 먼저 해당 트랜잭션 안에 들어있는 입력과 출력 목록에서 각 입력과 출력에 해당하는 ScriptSig와 ScriptPubkeys를 추출합니다. 그리고 기존 블록들을 찾아보며 입력과 연결된 이전 출력을 찾고, 각 입력과 출력에 들어있는 ScriptSig와 ScriptPubekey를 연결시킵니다.
ScriptSig와 ScriptPubkey는 각각 연속적인 정보를 담고 있습니다. 노드가 ScriptSig와 ScriptPubkey를 연결하고, 그 연결한 전체 시퀀스를 파싱하면 온전한 스크립트 코드가 나타나게 됩니다. 노드는 이 코드를 단계별로 실행합니다.
비트코인 스크립트 실행은 스택이 빈 상태에서 input의 scriptSig를 먼저 실행하고, 그 다음 scriptPubKey를 실행시킴. 실행 결과 스택의 맨 위 값이 FALSE이면 실패, TRUE(0이 아닌값)이면 성공.
예시 :
a -> b -> c
10btc
3btc
CTxin prevout - a의 공개키로 받은 CTxout 에 대한 포인터
CTxin scriptSig - a의 서명(비밀키)
CTxout nValue - btc value
CTxout scriptpubkey - b의 공개키
비트코인 트랜잭션의 검증과정
비트코인 노드를 통해서 수행됩니다. 노드들은 하나의 트랜잭션을 검증할 때에 3가지를 체크.
패트리샤는 Patricia is defined as a Practical Algorithm To Retrieve Information Coded In Alphanumeric(영숫자로 코딩 된 정보를 검색하는 실용적인 알고리즘) 을 뜻합니다.
이더리움에서는 모든 트랜잭션의 완전한 모델을 만들기 위해 Merkle-Patricia-Tree (trie) 방법을 사용한다. 이더리움 황서(Yellow Paper)에는 다음과 같이 정의되어 있다.
수정된 Merkle Patricia 트라이(trie) 는 임의 길이의 이진 데이터 (바이트 배열) 간에 매핑하기 위한 영구 데이터 구조를 제공한다. 256 비트 이진 조각과 임의 길이 이진 데이터 사이를 매핑하기 위해 가변 데이터 구조로 정의된다. trie의 핵심이며 프로토콜 사양 측면에서 유일한 요구 사항은 주어진 키-값 쌍 집합을 식별하는 단일 32 바이트 값을 제공하는 것이다.
코인과 토큰의 가장 큰 차이점은 바로 플랫폼의 유무 입니다. 사실 이 외에도 다양한 방법으로 코인과 토큰을 구별하긴 하지만 가장 많이 쓰이는 구별 기준이 플랫폼 유무임. 플랫폼이란 말이 쉽게 와닿지 않으신다면 그냥 기반 기술의 유무라고 생각해도됨.
우선 코인과 토큰을 구별하는 건 여러가지 기준이 있습니다. 독자적인 기술 수준에 따라서 구분하기도 하고, 단순히 이름 짓기 나름이라고도 생각함. 그 중 가장 보편적으로 사용되는 구분 기준은 플랫폼의 유무입니다. 이 블록체인 네트워크를 그 코인이 독자적으로 가지고 있다면 코인, 다른 블록체인 네트워크 기반을 사용한다면 토큰입니다.
이 블록체인 기술을 개인적으로 가지고 있는 암호화폐는 코인, 다른 블록체인 기술을 기반으로 한다면 토큰.
코인 : 플랫폼이 있는 암호화폐
토큰 : 플랫폼 코인 위에서 동작하는 dApp의 암호화폐
CFT는 분산시스템에서 노드가 비정상적인 충돌에 의해 문제가 생기더라도, 나머지 시스템에서 서비스를 할 수 있게 하는 작동방식을 말합니다. 반면 BFT는 더 복잡하며 악의적인 행위자가 있을 수 있는 시스템을 처리합니다.
PBFT는 분산시스템이 약속된 행동을 하지 않는 비잔틴 노드가 존재할 수 있는 비동기 시스템일 때 해당 분산시스템에 참여한 모든 노드가 성공적으로 합의를 이룰 수 있도록 개발된 합의 알고리즘입니다.
PBFT는 기존의 BFT 합의 알고리즘이 동기식 네트워크에서만 합의가 가능했던 문제를 해결하여 비잔틴 노드가 있는 비동기 네트워크에서 합의를 이룰 수 있게 하였습니다.
1) 2) 3)의 과정이 끝나면 모든 노드들은 정족수 이상이 동의한, 즉 합의를 이룬 같은 데이터를 가지게 됩니다.
PBFT의 장점
1. 트랜잭션 완결성과 빠른 거래 확정: PBFT는 다음 블록 합의가 이루어진다면 제안된 블록의 합의 내용이 확정되어 한번 확인(1 Confirmation)으로 거래가 완결되므로 거래 확정시간이 짧다.
2. 저에너지로 비용 감소: PBFT는 작업증명방식 PoW이 아니고 지분증명방식 PoS을 기본으로 하여 에너지 사용량이 적고, 따라서 거래 비용이 작다.
UTXO : 미사용 트랜잭션의 출력값
nonce는 중복되지 않고 순차적이기 때문에, 같은 nonce 에 여러 트랜잭션 전송이 발생하였다면 해당 nonce 중 제일 높은 가스비를 지불한 트랜잭션이 처리됩니다.
어카운트 기반인 이더리움의 이중 지불 문제를 방지하기 위해 nonce를 사용하는 것처럼 비트코인은 UTXO를 사용해 이중 지불 문제를 방지하기떄문에 트랜잭션 nonce는 필요없다.
Safety(finality) : 시스템에 나쁜 일이 발생하지 않는다는 의미이며, 모든 정상적인 참여자는 같은 상태에 동의하여야 하고, 그 상태는 유효해야 합니다. 다시 말해, 문제 없는 노드는 잘못된 합의를 하지 않는다는 의미입니다.
Liveness : 시스템은 항상 살아 있어야 한다는 의미이며, 결국에는 어떤 상태에 동의하여야 하고, 모든 참여자는 동의된 상태에 도달해야 합니다. 다시 말해, 문제 없는 노드는 반드시 합의를 한다는 의미입니다.
블록체인에서 Finality(완결성)의 의미는 블록이 한 번 블록체인에 포함되고 나면 되돌릴 수 없음을 의미.
Finality 보장 방법은 합의 알고리즘 설계에서 가장 중요한 문제 중 하나.
Finality는 크게 확률적, 절대적 두 종류로 분류.
확률적 finality는 블록을 되돌릴 수 없다는 것을 확률적으로만 보장. 비트코인 나카모토 합의 알고리즘이 사용하는 방식으로 블록이 추가로 생성될수록 앞쪽에 있는 블록의 finality가 확률적으로 증가하는 방식.
오래된 블록을 되돌리기 위해서는 많은 컴퓨팅 파워가 필요하기 때문에 어느 정도 오래된 블록은 사실상 되돌리는 것이 불가능해짐. 거래소에 비트코인을 입금하면 6새의 블록 컨펌을 기다린 이후 거래가 가능한 이유도 거래소 입장에서 확률적으로 finality를 체크하기 때문.
절대적 finality는 한 번 블록이 블록체인에 포함되면 어떤 경우에도 해당 블록을 되돌릴 수 없음을 보장하는 방식. 주로 텐더민트와 같은 BFT 계열의 합의 알고리즘이 절대적 finality를 보장하는데, 텐더민트의 경우 블록이 전체 노드 voting power의 2/3 prevote와 2/3 precommit을 받으면 해당 블록은 즉시 finalize가 됨.
작성중
최대 TPS와 현재 TPS의 관점
트릴레마에서 관점
일단 TPS가 늘어난다는 것은 확장성이 좋아진다는 말이고 현재 블록체인의 가장 문제점으로 삼고 있는 점을 해결하였다고 할 수가 있습니다.
하지만 블록체인의 트릴레마는 한쪽이 좋아지면 한쪽이 무너진다는 특성이 있고 반드시 확장성이 좋아지면 보안 및 탈중앙화가 무너지게 될 것입니다.
예를 들어, 블록의 크기 늘림 -> 트랜잭션 처리 증가 -> 확장성 증가 -> 데이터가 증가 -> 일부 채굴자들의 독점 -> 중앙화(탈중앙화가 악화)
확장성이 좋아지면 탈중앙화 또는 보안이 떨어지게 되는 블록체인 트릴레마에 빠지고 이는 현재 블록체인이 가장 우선시하여 개선해야 하는 문제점.
블록이란 다수의 트랜잭션을 모아서 하나로 관리하기 위한 묶음.
블록체인의 전체 노드 중 50%를 초과하는 해시 연산력을 확보한 뒤, 거래 정보를 조작함으로써 이익을 얻으려는 해킹 공격.
하드 포크 : 블록체인의 기본 기능 자체를 수정하는 포크를 말하며, 블록체인의 문제 해결 및 업그레이드 방식의 하나로서, 업그레이드 이후에는 기존 문제를 해결하고 이전 블록체인과 전혀 다른 프로토콜을 가지는 블록체인이 됩니다. 이러한 하드포크 이후에 채굴 노드들은 새로운 버전으로 반드시 업그레이드를 해야 한다고 해서 하드(Hard)포크라고 합니다.
소프트 포크 : 기존 블록체인의 기능을 일부 수정하는 포크를 말하며, 소프트포크를 하면, 기존 블록체인의 기본 구조는 변경되지 않고 부분적인 기능개선만 이루어지기 때문에 기존 블록체인 노드들은 간단한 시스템 업그레이드만으로도 새로운 시스템으로 이전할 수 있게 됩니다.
dApp 이란, Decentralized Application 의 약자로서 이더리움, 큐텀, 이오스 같은 플랫폼 코인 위에서 작동하는 탈중앙화 분산 애플리케이션을 뜻하며, 간략히 분산앱이라고도 함.
가장 큰 차이점은 중앙화, 탈중앙화의 차이점. 이로인해 다른 차이점들이 생김
다른 예시로는 속도적인 면에서의 차이, 유저 친화성의 차이, 데이터 삭제 여부, 정보 투명성 등...
근본적인 차이가 블록체인을 사용하냐 안하냐의 차이
잘 봤습니다~