https://medium.com/@dongha.sohn/bitcoin-8-%ED%95%A9%EC%9D%98-consensus-90e879d80b16
Bitcoin#8: 합의(Consensus)
이전의 글들을 통해 거래의 구조와 검증방식, 블록의 구조를 살펴보았다.
medium.com
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=gitacademy01&logNo=222027103524
P2P 네트워크를 이용한 블록체인
안녕하세요 여러분 :) 오늘은 블록체인에 대해서 알아보려고 합니다. 얼마 전 만난 AI 연구를 하시는 분...
blog.naver.com
(이거는 비교조건/p2p개념 링크)
주의!
나름의 이해라서 백퍼 맞지 않을 수 있음ㅎㅎ
(이해를 돕기 위해 설명해준 학우분 감사합니다.)
수업에서 블록생성하고 연결하고 검증하고 서버열어서 블록보여주고 이런 걸 해봤는데
드는 생각이 왜 p2p를 하지? 였음
노드간의 통신을 작동해야된다는데
local3001 서버 열고 여기서 블록생성하고 검증하면 여기가 중앙서버고
노드, 참여자용 서버로 만든 6001, 6002,6003은 블록 생성해서 중앙서버가 검증자해주는 건가?
잉 그러면 탈중앙화가 아닌데? 혼돈;;;
내가 이해를 잘못하고 있었음
"먼저 블록 채굴에 성공한 채굴자는 해당 블록을 주변에 전파하게 된다. 중요한 사실은, 이때 전파하는 블록은 채굴에 성공했다고 확신할 수 없는 블록이며 검증을 거쳐 블록체인에 연결되어야 한다. 거래는 노드들에게 전파되며 검증의 과정을 거치듯, 블록 또한 검증을 거치게 되며 검증의 조건은 다음과 같다....."
우리 p2p하려고 웹소켓 써서 주고받는 통신하잖아
그 전에는 기본 포트는 컴퓨터 내에서 물리적으로 연결되어있으니까 접속이 가능한거고
웹소켓으로 내 컴퓨터를 3개의 컴퓨터로 분리하다고 치고 6001, 6002, 6003에 하나씩 컴퓨터가 있고
실제로는 하나니까 물리적으로 3001에 연결될 수 있는거라 서버는 3001만 열어도 될거같기도하고..
암튼 결론은!
내가 연 3001은 그냥 이 모든게 보이는 용도로만 쓰이는 보여주기용 서버이고
실제로 블록 생성, 검증은
노드들이 하는거임
노드들의 서버 6001, 6002, 6003
그니까 얘네끼리 통신하는 p2p서버로 하는거지.
처음에 시작했을 때
제네시스 블록을 모든 노드들이 갖고 시작하고
그 뒤에 줄줄이 블록을 생성하는 거임
이제 검증과정을 거쳐서 서로블록을 비교하고
황금블록 발견한 애꺼가 당첨되면 원본 블록체인에 연결되고
나머지는 허탕치고 다시 다음블록 만드는 거임
그 checkedValid 코드부분은
//블록구조 유효한지
//현재 블록의 인덱스가 이전 블록의 인덱스보다 1만큼 큰지
//이전블록의 해시값과 현재 블록의 이전해시가 같은지
//데이터 필드로부터 계산한 머클루트와 블록헤더의 머클루트가 동일한지
//이 조건 다 맞으면 올바른 구조체이다
이 조건들로 블록이 진짜인지 증명하는거고
진짜 블록이어도 아직 당첨은 안된거지 원본에 연결안된거
이제 비교해서 당첨될라면
p2p끼리 통신..
누구꺼를 연결할걸로 할지...
chainedBlock에
replaceChain 함수 주석처리 해놨는데 이거가
p2pServer.js에서 이렇게 함수호출되어있음
이걸로 누구꺼 연결할지 찾는거 아닐까 짐작..
블록들 비교까지 한다면
어떻게 하는지는 모르겠다 어렵다!!!
아무튼 해야되는거는
블록마이닝(채굴)/ 지갑생성/ 현재 상황 시각화 / DB 채굴 저장
사실상 지갑생성까지 수업때 한거긴한데
위같은 비교검증은 없어서
완전한 블록체인은 아닌거같고..흠