카테고리 없음

예상 10문제

정신이 많이없는 개발자 2022. 2. 10. 15:17
728x90
반응형

000지원자님,
😭 풀노드와 라이트노드의 기능과 차이점은 무엇인가요?

👌 풀노드는 제네시스블록부터 현재 새롭게 생성되는 블록까지 모든 블록정보를 저장하는 노드이다. 보통 블록을 추가(채굴)하고 검증하는 기능을 수행한다.스마트폰과 같이 성능이 부족한 노드들도 블록체인 네트워크에 참여할 수 있도록 한 것이 라이트 노드이며, 블록헤더(메타데이터) 만을 저장한다. 지갑의 기능과 트랜잭션 검증을 수행하는데, 트랜잭션 검증을 할때에 인근 풀 노드에게 해당 트랜잭션 검증을 위해 필요한 머클리 정보를 요청하여 머클루트를 계산 해 내어, 가지고있는 머클루트와 비교해 트랜잭션 검증을 수행한다.


000지원자님,
😭 비트코인, 이더리움에서 트랜잭션 검증은 어떻게 이루어 지나요?

👌 비트코인과 이더리움 모두 타원곡선디지털서명(ECDSA) 알고리즘을 이용하여 트랜잭션을 서명한다.

 

트랜잭션 검증의 절차는 이렇다. 모든 노드들이 데이터의 일관성을 유지하기위해 만약 내가 영희에게 1비트를 보낸다면 우선 나는 처리해야 할 트랜잭션에 개인키를이용해 ECDSA 알고리즘으로 서명을 하고, 공개키, 원본데이터와 함께 다른노드들에게 전달한다.

데이터를 전달받은 노드들은 디지털서명된 트랜잭션을 ‘보낸사람’ 의 공개키를통해 복호화하여 원본데이터와 비교한다.

만약 원본데이터와 복호화한 데이터가 다르다면 이는 위변조된 트랜잭션이며 블록에 추가되지 않는다. 이런 트랜잭션 검증을 통해 데이터의 무결성과 개인 신원에대한 검증을 할 수 있다.

 

  그런데 네트워크로 전송되는 이더리움 트랜잭션 포맷을 보면 서명자의 공개키가 포함되어 있지 않다. 트랜잭션에 보낸 사람의 주소는 포함되어 있지만 이더리움 주소는 공개키의 해시값이기 때문에 주소만 가지고 공개키를 복원하는 것은 불가능하다.

ECDSA는 메시지(트랜잭션의 해시)와 서명만 있으면 서명에 사용된 공개키를 복원하는 게 가능하다. 완벽한 복원은 아니고 후보를 4개까지 줄일 수 있다.

그래서 이더리움은 4개의 후보 중에 어떤 공개키를 써야 하는지를 트랜잭션에 포함시켜서 보낸다. 이더리움 트랜잭션 서명은 r, s, v 컴포넌트로 이루어져 있는데 여기서 r, s는 각각 32바이트로 이루어진 서명 데이터이고, v는 1바이트로 4개의 후보 중에 어떤 공개키를 사용해야 하는지 지정한다.

 

 



 

반응형