해당 게시글은 Blockchain 관련 업무를 진행함에 있어 아는게 1도 없어 힘들어하는 나를 위해 작성하는 글으로, 나의 이해를 바탕으로 작성된 내용이기에 신뢰성은 장담할 수 없다.
* 기본 용어
- EOA: Externally Owend Account. 외부 소유 계정 이라고 하지만 잘 모르겠다. 간단하게 개인이 관리하는 개인 계정이라고 이해하면 될 것 같다. 개인 키(Private Key)를 보유하고 있으며, 각 네트워크나 지갑(Wallet)을 통해 생성할 수 있다.
- CA: Contract Account. 컨트랙트 계정. 스마트 컨트랙트에 접근하기 위한 계정(주소) 정도로 생각한다. 해당 계정에는 실질적인 기능 code가 위치한다고 생각하고 있다. EOA와는 다르게 개인 키(Private Key)가 없고, 스마트 컨트랙트(Smart Contract)를 Blockchain Network에 배포할 때 생성된다.
(Account, 계정이라고 하면 (나도 그랬고) 코드의 계정? 이라고 해서 잘 이해가 안 되는데, 그 보다는 주소(Address)로 우선 이해하는 게 쉬울 수 있을 것 같다. 개인 계정에 접근할 수 있는 주소, 기능 코드를 호출할 수 있는 주소와 같이. 실제로 "계정"의 "주소"를 호출하는 방식으로 동작하는 것 같으니...)
- Transaction: EOA가 CA에게 보내는 데이터 패키지라고 한다. 특정 CA의 기능을 활용하기 위해 필요한 데이터를 signing해서 CA에 전달하는데, 이 때 전달되는 signed 된 데이터 패키지라고 한다. 약어로 Tx를 사용하고, transaction 내에는 아래와 같은 항목들이 포함된다.
> 메시지 수신처 : 아마도 CA의 주소
> 발신처를 확인할 수 있는 서명 : 아마도 private key를 활용해 Sign된 데이터
> 발신처가 수신처로 보내는 Coin/Token의 양
> 선택적(optional) 데이터 필드
> START-GAS 값
> GAS-PRICE 값
> 트랜잭션 실행이 수행되도록 허용된 최대 계산 단계수
> 매 계산단계마다 발신처가 지불하는 수수료
Transaction은 EOA만 발송이 가능하며, CA는 자체적으로 Tx를 발생시킬 수 없다. CA가 다른 CA로 처리를 요청하는 경우도 있는데, 이 때에는 Tx가 아니라 Message를 발송하고, 이 때에는 Internal Transaction이 발생한다고 한다. 이에 대해서는 아직 필자도 잘 알지 못하는 관계로 다음에 따로 작성해보도록 하겠다.
* Blockchain의 정의
Blockchain의 정의에 대한 자료를 찾아보면 처음에는 크게 와닿지 않는 내용으로 기재된 부분이 많다. 내 수준에 맞는 설명은 대략 "네트워크에 기록된 Block이라는 데이터 집합을 Chain 구조로 연결해 놓은 알고리즘" 으로 이해된다.
어떻게 Block을 연결하는가? 하면 Hash값을 활용하여 각 Block을 연결할 수 있다고 하는데, 명확하게 이해가 되지는 않는다. 아마 각 Block에 다른 Block에 대한 Hash값이 저장되어 있어 서로 다른 Block을 참조할 수 있는 형태가 아닐까 추측해본다.
* Block의 생성
Block에 대한 정의에 대하여 해시넷 위키를 참조하자면, "다수의 Transaction을 모아서 하나로 관리하기 위한 묶음" 이라 작성되어있다.
비트코인의 경우 10분간 진행된 약 2,000건의 거래내역을 하나의 블록, 라이트코인의 경우 약 2분 30초 동안 진행된 거래내역을 하나의 블록으로 만들어 관리한다고 하니, 이는 Block의 생성 기준이 Blockchain Network 마다 다르며 각 Network에서 생성하는 기준이라 판단해도 될 것으로 보인다.
나름대로 정리해보자면, 개인 계정에서 어떤 작업을 수행하기 위해 컨트랙트로 암호화 된 데이터를 발송한다. 이 데이터에는 수신인을 포함한 작업에 필요한 값들이 정의되어 있다. 이렇게 요청된 데이터를 각 Network마다 자체적인 기준(단위)으로 묶어놓은 것이 Block이며, 각 Block을 Hash값으로 연결해 놓은 알고리즘 형태를 Blockchain이라고 한다, 정도가 될 것 같다.