블록체인(BlockChain)이란?
- P2P(Peer to Peer) 네트워크를 통해 관리되는 분산 데이터베이스의 한 형태
- 블록체인 노드(네트워크에 연결된 여러 컴퓨터)에 디지털 서명된 거래 정보를 보관하는 분산 원장 기술(Distributted Ledger Technology)
블록체인의 동작 원리
- 누군가 트랜잭션(transaction)을 만들어 요청
- 트랜잭션을 요청 받은 노드는 트랜잭션의 유효성 검증(validation)을 한다
- 유효한 트랜잭션이 블록체인의 P2P네트워크에 전파(broadcast)
- 블록 생성자는 블록 생성 규칙을 준수하며, 검증된 트랜잭션을 포함하는 새 블록(block)을 생성
- 생성된 새로운 블록이 P2P 네트워크에 전파
- 기존 블록에 새로운 블록이 연결되며 트랜잭션이 처리
블록체인 암호학
공개키 암호화(Public Key Cryptography, PKC)
- 계산하기는 쉽지만 그 역(inverse)을 계산하기 어려운 특수한 함수를 바탕으로 생성된 고유한 키를 사용하여 정보를 보호하는 방법
💡 *“공개키 암호화 == 비대칭 암호화”*
- 비트코인 및 이더리움에서는 이산 로그 문제(Discrete Logarithm Problem)를 이용하는 타원곡선 암호화(Elliptic Curve Cryptography)를 활용
개인키
- 개인키 생성 프로세스는 오프라인 프로세스
- 1~ 2256 사이의 무작위로 선택한 숫자
- 대부분의 프로그래밍 언어에 있는 rand 함수 같은 암호학적으로 안전하지 않는 난수 생성기 사용 금지
- 임의로 생성한 16진수 개인키
해시 함수(Hash Function)
- 임의 크기의 데이터를 고정된 크기 데이터로 매핑하는 함수
- 해시 함수의 입력을 메시지 또는 입력 데이터, 결과를 해시(hash)라고 함.
- 결과값을 알고 있을 때 입력 데이터를 다시 작성하는 것이 불가능한 단방향(one-way) 함수 → 이더리움은 공개키를 주소로 변환하기 위해 해시함수(keccak-256) 사용
트랜잭션
- 이더리움 네트워크에 전송되고 블록체인에 기록됨
- 블록체인 상태 변경을 유발하거나 컨트랙트를 실행하는 유일한 방법
- 이더리움은 독자적으로 상태가 변경되지 않음
- 컨트랙트는 독자적으로 실행되지 않음