
[처음 배우는 블록체인] 이라는 책을 참고하여 개인공부와 복습의 용도로 게시글을 작성했습니다.
날짜와 시간을 나타내는 문자열이다. 가독성을 좋게 하려고 날짜가 명시되어 있지만 서버에는 유닉스 시간으로 저장할 때가 많다. 블록체인은 실제 거래를 생성한 시각과 블록에 정식으로 저장한 시각을 타임스탬프에 저장하는데 두 기록이 일치하지 않아 문제가 발생한다.
암호화폐를 구분하는 작은 크기의 데이터를 말한다. 원본 데이터에서 해시값을 계산하는 함수를 해시 함수라고 한다. 해시값과 원래 입력값의 관계를 찾기 어렵게 만드는 해시 함수는 별도로 암호화 해시 함수라고 한다. 암호화폐의 블록 생성이나 주소 계산 등에서 암호화 해시 함수로 만든 해시값을 많이 활용한다.
비트코인과 블록체인 기반 암호화폐는 누구나 새로운 블록 생성에 참여해 보상으로 암호화폐를 얻는다. 이러한 행동을 채굴이라고 한다. 채굴에 참여한 사람은 '채굴자'라고 한다.
임의의 참여자들이 상호 운용하는 시스템(혹은 프로토콜)은 시스템에 문제를 발생시키는 참여자가 있어도 제대로 동작하게 만들어야 한다. 작업 증명 알고리즘은 채굴했다는 사실을 증명한 후에 블록을 생성하게 만드는 방법이다. 동시에 증명 없이는 블록을 생성할 수 없게 하는 역할도 한다. 대량의 컴퓨팅 자원을 이용하는 시스템에서 많이 채택하는 알고리즘이다.
메인넷은 독립적인 암호화폐로 인정하는 프로그램을 출시.운용하는 네트워크이다. 테스트넷은 블록체인 애플리케이션을 개발할 때 사용하는 메인넷과 같은 구조의 네트워크이다. 메인넷을 이용하면 수수료를 내야 하거나 배포한 프로그램을 제거할 수 없는 등의 문제가 있으므로 테스트넷을 제공하는 것이다. 대표적인 이더리움 기반 테스트넷은 작업 증명 알고리즘을 적용한 롭튼과 권한 증명 알고리즘을 적용한 코반, 린키비가 있다. 테스트넷에서 운용하는 암호화폐 역시 채굴 비용이 있으므로 이러한 암호화폐는 테스트넷 배포 사이트나 커뮤니티에서 얻을 것을 권장한다.
메인넷이 있는 블록체인 시스템에서 발행한 암호화폐를 코인이라고 한다. 메인넷의 블록체인 시스템을 빌려 독자적인 암호화폐를 발행하면 토큰이라고 한다. 보통 토큰 사용이 활발해지면 별도의 메인넷을 만들어 코인으로 승격시킨다.
분산 시스템의 모든 프로세스가 같은 결괏값을 결정하는 과정을 합의라고 한다. 시스템에서 발생하는 에러를 막고 무결성을 보장한다. 블록체인 시스템은 누구나 블록을 생성할 수 있는 구조이므로 블록의 소유권과 생성 순서를 결정하는 합의 알고리즘을 사용한다. 블록체인은 블록 높이가 클수록 확정한 거래 내역이 바뀔 확률이 낮아지는 '확률적 합의' 개념의 알고리즘을 도입해 관리자가 없는 분산 시스템을 구현한다.
거래를 블록에 저장시켜 기존의 거래 내역과 새로운 거래 내역을 검증하는 것을 확장이라고 한다. 거래 내역 검증 작업은 어떤 거래 하나가 저장된 블록과 연결된 다른 블록의 개수만큼 반복한다. 그래서 연결된 블록의 개수를 확정 횟수라고도 한다. 블록체인은 확률적 합의를 적용하므로 확정 횟수가 많을수록 확정한 거래 내역을 신뢰도를 보장할 수 있다. 따라서 확정 횟수를 신뢰도를 나타내는 지표로도 이용한다.
가스는 이더리움에서 애플리케이션을 실행할 때 지급하는 네트워크 수수료이다. 블록체인 시스템에서 튜링 완전 애플리케이션의 동작 환경을 보장하려면 악성 프로그램의 실행을 막아야 한다. 가스는 악성 프로그램에 많은 수수료를 부과해서 자율적으로 문제를 해결하게 한다.
ERC는 Ethereum Request for Comments의 줄임말이다. 이더리움 네트워크의 개선안을 제안하는 EIPs에서 관리하는 공식 프로토콜이다. 인터넷 프로토콜이나 파일 형식 등을 정의하는 RFC의 이더리움 버전이라고 생각하면 된다. ERC20은 ERC에서 정한 표준 토큰 스펙이다(숫자 20은 20번째 제안이라는 의미). 토큰 이름, 통화 코드, 화폐 총공급량과 토큰 전달 방법이 정의되어 있다. ERC20 호환 토큰을 만들면 ERC20 호환 지갑 등의 각종 애플리케이션을 구현해 사용할 수 있다.