솔리디티 및 블록체인

블록체인 직관적 이해.zip

채채_._. 2024. 7. 13. 22:14

Plan of Attack

필요한 이유 : 다른 기술과 비교했을 때 블록체인은 덜 복잡하기 때문

 

블록체인이란?

지속적으로 증가하는 데이터로 블록 데이터를 암호학을 통해 보호하고 연결하는 기술 - 위키피디아

 

블록

- 고유의 해시값을 가짐

 

제니시스 블록 : 블록체인이 초기화 된 후 언제나 첫번째 데이터 블록

 

해당 예시의 경우 이전 해시가 없는 유일한 블록임을 가정하고 다음 블록의 해시 경우 이전 블록 해시 값과 동일.

이러한 해시값을 통해 블록들이 암호화 링크로 연결되어 있음을 알 수 있음.

 

동작 과정

모든 블록은 각자의 지문을 보유하고 있으며 이전 블록의 지문을 참조 > 블록 1의 지문이 바뀌면 2도 변경됨

⚠️만약 누군가 데이터를 조작한다면 지문이 바뀌기 때문에 그 전 지문과 매칭 불가!

 

SHA256 해시

디지털 문서를 식별할 수 있는 지문으로 기밀이 아닌 공개되어 있음

 

동작 원리

SHA : 안전한 해시 알고리즘의 약자

256 : 메모리가 차지하는 비트 수

 

✨특징

- 해시의 길이는 언제나 64자

- 숫자뿐만 아니라 문자도 올 수 있음

- 같은 데이터를 입력하면 같은 해시값 불러올 수 있음 > 즉, 같은 사람을 여러번 확인한다고 지문이 달라지지 않음

참고
https://tools.superdatascience.com/blockchain/hash
해당 사이트에서 문자 데이를 입력하면 해시값을 제시해주는 tool임

 

 

필요 요건

- 단방향으로 해시에서 문서로 갈 수 없음

- 동일한 문서를 해시 알고리즘에 적용하면 같은 값이 나오도록 결정적이여야 함

- 연산이 빨라야 함

- 쇄도 효과가 있어야 함

- 알고리즘이 인위적인 충돌에 견딜 수 있어야 하는 충돌 저항성이 있어야 함

 

불변 원장

- 손으로 쓰는 원장에서 한 항목을 쉽게 변경하는 것과 달리 블록체인에서는 이어지는 전체 항목을 변경해야 함

- 블록체인에 데이터가 한 번 기록되면 변경하기 어려워짐

 

분산 P2P 네트워크

- 많은 컴퓨터가 연결되어 있으며 많이 연결될 수록 좋음 하지만 지속적으로 모든 컴퓨터를 연결할 수 없음

- 블록체인은 모든 컴퓨터에 저장이 되어 분산됨

- 끊임없이 동기화하여 네트워크에서 계속 확인

 

⚠️ 만약 끊임없이 일치하는지 확인하는 피어가 불일치 한다면 즉각적으로 해킹을 감지하며 4가지 값 중 한가지 값이

      다르다는 것 또한 확인하고 기존값으로 복사하여 블록체인 기존 값으로 복구시킴

      → 해커는 한 컴퓨터나 블록체인을 해킹할 수도 값을 변경할 수도 없음

 

P2P 장점

신뢰할 수 없는 프레임워크에 신뢰를 가져와서 서로 거래할 수 있도록 함

 

채굴

블록 번호, 데이터, 이전 해시만 해싱 알고리즘에 넣어서 해시를 도출해내는 과정은 위와 같이 간단함

 

채굴의 경우 한번만 사용되는 숫자 Nonce 포함

 

Nonce

- 블록의 해시를 제어하거나 변화시킬 수 있음

- 통제력과 유연성을 가질 수 있음

- Nonce를 변경해서 해시값을 조정할 수 있으며 동시에 블록 번호와 데이터를 바꿀 필요가 없음

 

Nonce : 20 / Nonce : 23

- 해시가 극단적으로 변함 → 쇄도 효과 때문

 

채굴 동작 과정

 

- 해시가 연속적일 수 있기에 범위 자체를 위와 같이 해시풀로 범위를 나타냄

- 아래를 최솟값 / 위에를 최댓값으로 설정

 

 

 

- 어떤 구조로 올라가느냐는 상관없음

- 맵 경로를 알게되면 각자의 해쉬값이 어디에 위치하는지 알 수 있음.

 

채굴 방법

1. 블록체인 시스템이나 알고리즘이 대상을 설정하는 것

  • 대상은 해시 값보다 작아야 함

 

2. 다른 논스를 추측한 후 변경해서 대상 아래에 포함될 수 있는 해시를 지속적으로 찾는 것

 

쇄도 효과

: 눈사태 현상과 유사하며 해시의 가장 중요한 특성 중 하나

 

앞선 그림에서도 보이지만 Nonce의 값에 따라 해시 값이 줄어드는 것처럼 보이지만 nonce 143일 경우를 보면 예외가 있다는 것을 알 수 있음 → 쇄도 효과로 인해 사방에 흩어져 알 수가 없음

 

비잔틴 내 결함성

 

 

성을 둘러싼 네 명의 장군이 있다고 가정 + 과반수 이상의 동의가 있어야 행동 게시 가능 + 사령관, 반역자가 있다고 가정

⭐여기서 관건은 과반수 이상의 의견이 합의점을 찾아야만 안전함

 

1. 사령관이 반역자가 아닌 경우

 

초록색 : 공격 / 빨간색 : 후퇴

 

사령관이 공격하라는 명령을 내린 경우 반역자가 후퇴하라는 말을 하더라도 1개의 후퇴 2개의 공격 명령이 있는 장군은 무조건 공격할 거라고 예측 가능 → 과반수 이상이 공격으로 알고리즘은 합의에 도달

 

2. 사령관이 반역자인 경우

 

 

다 후퇴하라는 명령을 내리면 다 후퇴하기 때문에 작전 성공

 

 

한 장군에는 후퇴하라는 명령 / 두명의 장군에게는 공격하라는 명령 → 다수결의 알고리즘 불가능

 

3. 반역자가 두명인 경우

- 작전 성공이 절대 불가능

- 해당 알고리즘이 작동하려면 33%이하의 반역자가 있어야만 작동 가능

 

📍결론 : 블록체인의 경우 시스템을 공격하려는 사람들에게 해당 합의 알고리즘을 사용하여 보호해야 함

 

합의 알고리즘 : 공격자에 대한 방어 + 원리

블록체인을 위한 합의 프로토콜 문제

1. 공격자로부터 네트워크 보호 → 공격자가 블록을 고의적으로 추가할 경우

2. 블록체인의 경쟁 체인 문제 해결 → 계속 증가하는 방법에 대한 합의가 필요

 

합의 프로토콜 문제 해결 방법

1번째 문제에 대한 해결 방법

 

 

- 블록이 추가되기 전 네트워크가 전파되기 전 각 단일 노드에서 일련의 확인 진행

  • 통과하지 못할 경우 블록 추가를 기각 악의적인 블록 생성 불가

2번째 문제에 대한 해결 방법

 

 

상황 : 두 블럭이 동시에 채굴됐다고 가정했을 때 충돌 발생

 

 

상황 : 주황색 부분이 더 빠르고 4대 2로 주황색이 훨씬 우위에 있음

 

이럴 때 비잔틴 장군 문제와 유사하게 비잔틴 내결함성 성격을 보임

  • 합의 알고리즘 : 다수를 확인하고 실행
  • 블록체인 : 경쟁 체인을 가져야 함 → 먼저 블록을 만들면 해당 체인이 이기는 것

 

체인이 긴 주황색 그룹의 노드는 어떤 블록이 체인에 추가되더라도 다음 블록을 찾을 확률이 2배 더 높음

 → 보라색 네트워크가 주황색 네트워크를 수용하여 문제 해결

 

📍합의 알고리즘은 33%이상의 배신자가 있으면 합의 불가능 / 블록체인은 50% 이상의 해싱 파워를 가진 체인이 이김