Safety
: 노드 간 합의가 발생했다면, 어느 노드가 접근하든 그 값은 동일해야 한다.
Liveness
: 합의 대상에 문제가 없다면 네트워크 내에서 반드시 합의가 이루어진다.
*그동안 합의 알고리즘에서는 Safety > Liveness
-> Safety를 충족하는 상황에서 Liveness의 손실을 최소화
비트코인
- Liveness를 극대화.
- 하드 포크가 발생할 경우 최장 길이 체인 알고리즘을 활용해 Safety문제를 해결한다.
- 블록이 쌓일수록 변경이 사실상 불가능해지는 구조를 활용해 Safety를 확보한다.
소프트 포크 Soft Fork
: 기존의 규칙에서 큰 틀은 바꾸지 않고 부분적 업데이트만 일어나기 때문에 포킹된 블록끼리 호환이 가능하다.
하드 포크 Hard Fork
: 블록의 규칙을 근본적으로 바꾸는 업데이트로 이전 노드들과 호환이 되지 않는다.
전혀 다른 블록체인이 되어 합의에 도달하지 않고 서로 분리된 채 블록이 계속 쌓여 나간다.
비동기 네트워크 -> 블록체인이 구동되는 네트워크
노드가 메시지를 보내는 시간과 수신 노드가 메시지를 수신하는 시간 사이에 상한선이 없다.
즉, 메시지가 수신 노드에게 제대로 도착했는지 여부를 수신 노드가 응답하는데 얼마나 걸리는지 알 수 없다.
따라서 특정 노드가 임의로 메시지를 전송하지 않거나 거짓 데이터를 전송하는 배신행위가 가능한 네트워크.
FLP Impossibility
- 비동기 네트워크에서는 합의 문제를 완벽히 해결할 수 있는 분산 알고리즘이 없다는 것을 증명
- 비동기 네트워크에서는 한 노드에서 문제가 발생했을 경우, 그 노드에서 합의가 됐는데 단순히 응답이 오래 걸리는 건지 아니면 합의 과정에서 충돌이 발생해 응답을 안 하는 건지 알 수 없기 때문이다.
-> 블록체인에서 어떤 합의 알고리즘을 채택한다는 것은 Safety와 Liveness 중 하나를 어느 정도 포기해야 한다는 것을 의미
'Team' 카테고리의 다른 글
[블록체인] 트러플1 (0) | 2021.05.10 |
---|---|
[블록체인]블록체인과 솔리디티 (0) | 2021.05.06 |
[블록체인]PBFT (0) | 2021.04.11 |
[블록체인] 하이퍼레저 패브릭 (0) | 2021.04.04 |
[블록체인] 비잔티움 장군 문제 (0) | 2021.04.03 |
댓글