IDA Week 0 BlockChain101

박근수·2023년 5월 17일

0주차로서 목요일에 본격적인 학습이 시작되는데 그 이전에 블록체인,Golang, Docker를 미리 준비해주는 시간이 있어서 그 구분을 읽었습니다.
왜 Golang을 공부하냐 하신다면 cosmos sdk가 golang으로 만들어졌기 때문입니다.

링크텍스트

블록체인은 무엇이고 왜 만들어졌을까

블록체인은 이중 거래 문제를 해결하기 위한 해결책이다.

우리는 디지털 환경에서 살고 있습니다. 디지털 환경에서는 텍스트, 이미지와 같은 데이터들이 복사될 수 있습니다. 그런데 디지털 자산이 쉽게 복사가 된다면 어떤 문제가 있을까요? 신뢰성 있는 자산으로 취급받지 못하고 돈이 돈을 만드는 자기 복제로 인해서 가치가 사라질 것입니다. 현실에서는 100원이 실물로 있지만 디지털에서는 100원이 복사가 될 수 있기 때문입니다. 내게 있는 100원을 A에게도 주고 B에게도 주는데 없는 돈을 만들어버리는 것입니다. 이것을 이중 거래 문제라고 합니다.

사토시 나카모토 우리가 흔히 알고 있는 비트코인의 창시자는 디지털 화폐를 위한 이중 거래 문제의 해결책으로 블록체인을 제시했습니다.

어떻게 블록체인은 이중 거래 문제를 해결했나?

~~ (거래장부 == 원장 == ledger 다 같은 말입니다. ledger는 한국어 사전에 원장으로 나와있긴 한데 거래 장부가 좀 더 익숙한 단어라서 세개 다 혼용합니다 ㅎㅎ....)~~

현재 우리의 경제 시스템에서는 중앙화되고 법적인 기관으로 임명된 제 3자를 통해서 거래하도록 만들어서 이 문제를 피하도록 만들었습니다. 대표적인 예로는 은행, 카드회사, 지불 회사등이 있죠. 그들은 신뢰할 수 있는 거래 장부를 관리하고 복사해서 잘못된 거래나 이중 거래가 진행되지 않도록 합니다. 따라서 우리는 그들을 통하지 않고는 거래할 수 없는 것입니다. 우리 계좌나 거래 장부가 그들에게 관리되기 때문이죠.

비트코인은 중앙화된 기관 대신에 중앙화되지 않고 분산된 원장을 신뢰할 수 있는 ledger-keeper에게 전달합니다. 그들은 ledger-keeper의 네트워크로 유지됩니다. 각각의 멤버는 원장을 복사할 수는 있지만 다른 ledger-keeper의 동의 없이는 업데이트 할 수 없습니다.
따라서 원장을 업데이트하려는 트랜잭션은 이 원장을 관리하는 다수의 사람들이 볼 수 있습니다. 이들이 이상한 트랜젝션을 쳐내고 금지할 수 있습니다.

아니 그래서 블록체인 어떻게 작동하냐고...

만약 우리가 log 파일을 모니터링한다고 생각해봅시다. 그 로그 파일의 모든 변화와 역사들이 다 기록되어야 한다면 어떻게 해야할까요?
잘 알려진 해결책은 해시화하는 것입니다.

  Deterministic: the same message always results in the same hash.
  Fast: the hash value for any given message is computed quickly.
  Resistant: it is not feasible to generate a message from its hash value except by trying all possible messages.
  Uncorrelated: a small change to a message alters the hash value so extensively that the new value shows no relation to the old.
  Collision-resistant: it is infeasible to find two different messages with the same hash value.

** 이건 알아서 읽으시는 걸로... 해시함수의 5가지 원칙입니답.

해시 알고리즘에 변화가 없다고 했을 때 해시 함수에 어떤 인풋을 넣든지 상관없이 해시화는 똑같으니 해시값을 통해서 어떤 인풋인지는 알 수 없습니다. 따라서 복사본이 원본과 같다는 것을 증명하는데는 문제가 없습니다. (https://en.wikipedia.org/wiki/Cryptographic_hash_function)
해시를 통해서 원장의 원본 데이터 무결성이 확보 되었습니다. 원장에 해시화된 트랜젝션(거래 내역)의 블록들이 추가되어도 됩니다.

분산 네트워크에 참여하는 모든 노드는 권한이 있습니다. 모든 노드는 트랜젝션을 던질수도 있고 다른 노드들에게 정보를 줄 수도 있습니다. 누가 언제 어떤 거래를 했는지가 참 중요한데 전세계에 있는 노드들의 시간은 제각각 다릅니다. 트랜젝션 블록은 거래의 시간흐름에 따라서 순서가 정해져야 하는데 노드들의 시간이 다르니 절대적으로 옳은 거래의 순서라고 정의할 수 없게됩니다. (거래 순서가 다르면 인과관계가 달라지게 되기 때문에 거래 순서가 중요합니다.)이러한 노드들의 시간이 다른 문제는 물리적이면서 네트워크의 지연 때문에 발생하게 됩니다.

비트코인은 합의 알고리즘을 사용하여 이 문제를 해결했습니다. 이 합의 알고리즘은 작업 증명 Proof-of-Work라고 불립니다. 이것은 복권 추첨과도 같습니다. 이 증명 과정에서 운이 좋은 사람은 트렌잭션의 블록을 생성할 권한을 가지게 됩니다. nonce라고 불리는 이 복권 티켓은 해쉬 함수의 인풋값으로 사용되는데 성취하기 어려운 특징을 가져야 합니다. 증명된 당첨자의 의견은 블록의 트랜젝션 순서를 공식작인 결과로서 만들 수 있습니다.

데이터 베이스의 무결성을 위한 트랜젝션 원자성은 블록체인에도 똑같이 적용됩니다. 트랜젝션은 블록에 모두 추가되거나 모두 사라집니다. 이는 모든 노드들이 똑같은 결론에 동의해야 하기 때문에 그렇습니다. 따라서 블록체인의 트랜젝션은 결정적이면서도 원자적입니다.

profile
개성이 확실한편

0개의 댓글