블록체인 거래방법 블로그글
블록체인은 모든 거래자인 노드들이 거래내역이 담긴 장부를 공유합니다.
이처럼 탈중앙화 시스템에서 중앙거래자가 존재하지 않는데 어떻게 송금이 이뤄질 수 있을까요?
블록체인 거래가 이뤄지는 과정은 이와 같습니다.

1. A가 B에게 송금하기 위한 거래 요청을 보냅니다.
2. 해당 거래정보는 온라인 상에서 블록에 저장됩니다.
3. 해당 블록정보는 네트워크 구성원 모두에게 전파됩니다.
4. 구성원들은 해당 거래의 유효성을 검증하고 승인합니다.
5. 참여자 과반수의 데이터 내역과 일치한 거래는 승인되고, 승인된 거래는 새로운 블록으로 기존의 블록체인에 연결됩니다. 또한 그 사본이 만들어져 각 사용자들의 컴퓨터에 분산 저장됩니다.
6. A에서 B로 실제 자금이 이동됩니다.
공개된 거래내역을 중간에 다른 구성원이 빼돌리려는 위험이 없을까요?
이를 어떻게 막을 수 있을까요?
여기에는 바로 비대칭 암호학이 있습니다.
잠그는 키와 여는 키를 동일하게 생각하지만 비대칭 암호학에서는 각각의 역할을 하는 키가 따로 존재합니다.
대부분의 블록체인 거래를 하기 위해서는 유효한 디지털 서명이 필요합니다. 이 서명은 개인키를 통해서 할 수 있습니다. 계좌를 사용하기 위한 본인 서명은 여기서는 수학적 검증을 뜻합니다. 구성원들에게 원본 거래내역과 개인키로 암호화한 거래내역을 전파하는데, 이때 개인키로 암호화하는 것을 서명이라고 칭하고 있습니다.
공개키는 모두에게 공개되는 키로 은행의 계좌번호와 비슷합니다. 이처럼 공개키는 모두에게 보여져도 괜찮지만 무작위 숫자로 만들어진 개인키는 지갑에 접근할 수 있으므로 비밀리에 간직해야합니다.
공개키와 개인키를 통해 블록체인 거래과정을 살펴보겠습니다.

1. A가 B에게 송금하기 위한 거래내역(트랜잭션)을 A의 개인키로 암호화하여 서명한 후, A의 공개키와 원본 거래내역과 함께 구성원들에게 전파합니다. (거래내역은 고정된 길이의 해시값으로 변환하여 암호화합니다.이를 통해 원문의 길이와 상관없이 크기를 줄일 수 있고 빠른 검증이 가능합니다.)
2. 구성원들은 암호화된 거래내역을 A의 공개키를 이용해 원본과 비교하며 확인합니다.
(공개키로 열어 확인한 해시값과 원본의 해시값을 비교합니다.)
A의 서명을 통해 전송자의 정보를 확인하고, 이전 참여자들의 데이터 내역과 일치하는 올바른 장부인지를 확인합니다.
3. 검증을 통해 이전 블록에 이어 새로운 블록이 생성되면 B에게 송금이 완료됩니다. B는 개인키를 통해 지갑에 접근할 수 있습니다.
개인키 소유자들은 거래를 위해 쉽게 공개키를 만들어 전세계와 공유합니다. 개인키를 만드는 타원곡선 곱셈법은 암호 사용자들이 '트랩 도어'함수라고 부르는 함수의 일종으로, 한 방향으로의 계산은 쉽지만 반대방향으로의 계산은 불가능합니다. 이 수학적 트릭은 자금의 소유권을 증명하는 디지털 서명을 위조 불가능하고 안전한 것으로 만들어줍니다.
만약 개인키를 분실한 경우 지갑에 접근할 수 없기 때문에 꼼꼼한 관리가 필요합니다.
그렇다면 공개키와 주소는 같은 것일까요?
타원곡선 곱셈법을 사용해 개인키에서 공개키를 만들고 공개키에서 해시함수를 이용해 주소를 만듭니다.
단방향 암호화로 주소에서 공개키로 공개키에서 개인키로 접근하는 것은 불가능합니다.

이처럼 누구나 모든 거래를 확인할 수 있고 입증하는 동시에, 개인간의 거래를 만들어 낼 수 있다는 장점으로 블록체인 거래시 비대칭 암호학을 유용하게 사용하고 있습니다.
오늘은 블록체인 거래를 돕는 공개키와 개인키에 대해 알아보았습니다.
감사합니다.