◆ 블록 체인 과 이더리움 아키텍쳐
▶ 블록 체인은 여러 컴포넌트로 이뤄진 아키텍처이며 블록 체인을 특별하게 만드는 것은 이러한 구성 요소들이 기능하고 서로 상호 작용하는 방식
▶ 중요한 이더리움 구성 요소는 이더리움 가상 머신(EVM), 채굴자, 블록, 거래, 합의 알고리즘, 계정. 스마트 계약, 채굴, 이더, 가스 등
▶ 이더(Ether)
◎ 이더(Ether)는 이더리움의 통화
◎ 이더리움에서는 상태를 변경하는 모든 활동에 대한 요금으로 이더가 필요하고 또한 체인에서 성공적으로 블록을 생성하고 기록한 채굴자는 이더를 보상으로 받음
◎ 이더는 암호화폐 거래소에서 달러 혹은 다른 전통적인 통화와 쉽게 교환할 수 있음
◎ 이더리움에는 이더를 세는 화폐 단위계가 있는데 이더의 최소 단위 혹은 기본 단위는 웨이(wei)
◎ 화폐 단위의 이름과 값을 웨이로 나타낸 목록: https://github.com/ChainSafe/web3.js/blob/0.15.0/lib/utils/utils.js#L40
▶ 가스
◎ 이더는 공개된 거래소에서 거래되며 가격은 매일 변동되는데 요금 납부에 이더를 사용한다면 같은 서비스를 사용하는 비용이 어떤 날에는 매우 높았다가 다른 날에는 낮을 수도 있음
◎ 사람들은 이더의 가격이 떨어지기를 기다렸다가 거래하려고 할 것인데 이는 이더리움 같은 플랫폼에 있어 바람직하지 못함
◎ 가스는 이더리움 내부 통화로 실행과 자원 활용 비용은 이더리움 내에서 가스 단위로서 미리 결정되는 이것을 가스비(gas cost)라고도 하는데 이더 가격이 상승할 때 더 낮은 가격으로 이더 가격이 하락할 때 더 높은 가격으로 조정할 수 있는 가스값(gas price)도 있음
◎ 문자열을 수정하는 계약 내의 함수를 호출하는 데는 미리 결정된 가스가 소요되며 사용자는 이 거래를 원활하게 실행하기 위해 가스를 지불해야 함
▶ EVM
◎ 블록체인 네트워크는 채굴자가 가진 여러 개의 노드로 구성되며 채굴을 하지 않는 일부 노드는 스마트 계약과 거래의 실행을 돕는데 이것들이 EVM
◎ 각 노드는 다른 노드와 네트워크로 연결되는데 이러한 노드들은 피어 투 피어 프로토콜을 사용해 서로 통신하며 기본 포트 번호는 30303
▶ 블록
◎ 블록 체인을 원장 또는 장부에 비유한다면 하나의 블록은 확인된 거래들을 기록하는 원장의 한 페이지 또는 하나의 표에 해당
◎ 블록 체인의 각 블록은 해시로 고유하게 식별되며 헤더 부분과 본체로 구성
◎ 헤더는 블록의 생성에 관한 정보(타임스탬프, 머클 루트, 넌스 값, 난이도 대상, 버전) 와 이전 블록에 대한 참조로 구성되며 본체 (body)는 승인된 거래들로 이루어 짐
◎ 하나의 블록이 성공적으로 검증되면(채굴되었다(mined) 라고 하기도 함) 그 블록은 공식 블록 체인의 일부가 되고 그러면 그 블록 안에서 새 비트 코인들이 생성되고(코인 베이스 거래) 그 비트 코인들이 검증자(채굴자)들에게 지급됨
◎ 블록 체인과 이더리움에서 모든 블록은 다른 블록과 관련이 있는데 두 블록 사이에는 부모 자식 관계가 있으며 부모는 단 하나의 자식만 가질 수 있고 자식은 단 하나의 부모만 가질 수 있음
◎ 이는 블록 체인의 체인을 형성하는 데 도움이 됨
◎ 부모 블록의 해시를 자식 블록의 헤더에 저장함으로써 관계를 맺음
◎ 이더리움에는 제네시스 블록 혹은 최초 블록이라는 개념이 있는데 이 블록은 체인이 초기화될 때 자동으로 생성됨
◎ 체인은 제네시스 블록과 함께 초기화되며. 제네시스 블록의 내용은 genesis.json 파일에 의해 결정
▶ 거래
◎ 거래 또는 트랜잭션은 블록 체인 시스템의 가장 근본적인 구축 요소
◎ 거래는 블록 체인 네트워크 안의 두 주소 사이에서 진행된 가치 전달(transfer of value)을 나타내는데 여기서 가치는 암호 화폐
◎ 거래 정보는 블록 체인 프로토콜(비트코인이나 이더리움 같은)이 정의하는 작은 자료 구조로 구현되는데 그 자료 구조는 거래 정보의 특성들(메타데이터, 입력 들, 출력 들 등등)과 모형을 정의
◎ 자금을 보내는 사용자(전송자)는 자신의 개인 키(자신의 지갑에 담긴)를 이용해서 거래에 서명하며 자금을 받을 대상(수신자)의 주소도 지정하고 전송을 마친 후 거래가 공표되면 네트워크의 사용자들은 디지털 서명과 공개 키를 이용해서 거래를 검증하고 전송자가 거래 정보에 명시된 특정 주소에 담긴 비트 코인들을 소비할 권한이 있는지도 점검
◎ 이더리움은 블록에 거래를 담는데 각 블록은 가스 한도가 있으며 각 거래는 실행을 위해 어느 정도의 가스를 필요로 함
◎ 원장에 아직 기록되지 않은 모든 거래로부터 누적된 가스는 블록 가스 제한을 초과할 수 없는데 이는 모든 거래가 단일 블록에 저장될 수 없음을 보증
◎ 가스 제한에 도달하자마자 블록으로부터 다른 거래가 삭제되며 채굴이 시작됨
◎ 거래는 해시되어 블록에 저장되고 두 거래의 해시가 해시되어 또 다른 해시를 생성하는데 이 과정은 결국 블록 내에 저장된 모든 거래에 대한 단일 해시를 제공하고 이 해시를 거래 머클 루트 해시(transaction Merkle root hash)라 하며 블록의 헤더에 저장됨
◎ 어떤 거래에 변경이 있을 경우 그것의 해시도 변경되며 결국 루트 거래 해시도 변경되고 블록의 해시가 변경되면 부모 해시를 저장하는 자식 블록도 해시를 바꾸게 되므로 누적 효과를 내서 거래를 변경 불가능(immutable)하게 만드는 데 도움이 됨
▶ 이더리움 노드
◎ 노드(node)는 피어 투 피어 프로토콜을 통해 연결되어 이더리움 네트워크를 형성하는 컴퓨터들을 가리킴
◎ 이더리움에는 두 종류의 노드가 있는데 EVM 과 채굴 노드
◎ EVM
-
EVM은 이더리움 네트워크의 실행 런타임
-
EVM의 일차적인 책임은 스마트 계약에 쓰여진 코드를 실행하는 런타임을 제공하는 것
-
EVM은 계약 계정과 외부 소유 계정, 자체적인 스토리지 데이터에 접근할 수 있는데 전체 원장에 접근할 수는 없고 현재 거래에 대해 제한적인 정보를 소유
-
EVM은 이더리움의 실행 요소
-
EVM의 목적은 스마트 계약의 코드를 한 행 씩 실행하는 것이지만 거래를 제출했을 때 거래는 즉시 실행되지 않고 그 대신 거래 풀(pool)에 들어가고 이러한 거래는 이더리움 원장에 아직 기록되지 않음
◎ 채굴 노드
-
채굴자에게는 이더리움 체인에 거래를 기록할 책임이 있는데 채굴자가 원장에 거래를 기록하는 데 흥미가 있는 것은 그에 관련된 보상 때문
-
채굴자가 얻는 보상은 두 가지로 체인에 블록을 기록하는 보상과 블록의 모든 거래로부터 누적된 가스료를 얻는것
-
일반적으로 블록 체인 네트워크에는 많은 채굴자가 거래를 기록하기 위한 시도 및 경쟁을 벌이지만 단 하나의 채굴자만이 원장에 블록을 기록할 수 있으며 나머지는 현재 블록을 기록할 수 없음
-
블록 기록을 책임지는 채굴자는 퍼즐이라는 방법으로 결정되는데 모든 채굴자에게 문제가 주어지며 그들은 각자의 컴퓨팅 파워를 사용해 퍼즐을 풀기 위해 노력
-
퍼즐을 처음으로 푼 채굴자는 거래를 포함하는 블록을 자신의 원장에 기록하고 검증을 위해 블록과 논스(nonce) 값을 다른 채굴자에게 보낸 후 검증을 거쳐 받아들여지면 채굴자들이 가진 모든 원장에 새로운 블록이 기록됨
-
이러한 과정에서 승리한 채굴자는 5 이더를 보상으로 받음
-
모든 채굴 노드는 각자의 이더리움 원장 인스턴스를 보유하며 궁극적으로 모든 채굴자의 원장이 같아지고 채굴자는 원장이 최종 블록을 포함하도록 유지해야 함
-
채굴자 혹은 채굴 노드가 수행하는 작업
-
거래를 포함하는 새로운 블록을 채굴 혹은 생성하고 이더리움 원장에 기록
-
새로 채굴한 블록을 다른 채굴자에게 광고하고 보냄
-
다른 채굴자가 채굴한 새로운 블록을 반영함으로써 자신의 원장 인스턴스를 최신으로 유지
-
-
채굴 노드(mining node)란 채굴자에게 속한 노드를 의미하는데 이러한 노드들은 EVM이 호스트되는 것과 동일한 네트워크에 속함
-
특정 시점에 채굴자들은 새로운 블록을 생성하고 거래 풀로부터 모든 거래를 수집해서 새롭게 생성된 블록에 그것들을 추가하고 최종적으로 이 블록이 체인에 추가됨
▶ 스마트 계약
◎ 스마트 계약은 블록 체인 자체에 저장된 스스로 실행되는(self-executing) 스크립트
◎ 스마트 계약은 업무 논리(business logic)를 불가침의 계약 조항들로 번역해서 중개인(broker)이나 변호사, 기타 중간 매개체에 의존하지 않고 스스로 실행되게 만든다. 스마트 계약 덕분에 블록 체인은 단순한 블록들의 네트워크 이상의 것이 됨
◎ 비트 코인 초창기의 스마트 계약은 기본적인 잠금(locking) 및 해제 (unlocking) 스크립트의 형태였지만 다른 블록체인들이 등장하면서 좀 더 복잡한 형태로 발전
◎ 스마트 계약은 블록 체인의 여러 동력 중 좀 더 강력하고 파괴적인 것에 속하며 기업들이 점점 더 많은 관심을 보임
◎ 가트너의 예측에 따르면 2022년이 되면 전 세계 기업과 조직의 25% 이상이 스마 트 계약을 사용할 것
'IT 초보코딩의 세계 > 블록체인' 카테고리의 다른 글
블록체인 Solidity(이더리움 가상 머신, 계약 방법, 계약 구성요소 ) 1장 (2) | 2023.08.29 |
---|---|
블록체인 탈중앙화 앱(네트워크 컨트랙트, 메타 마스크 설정) 4장 (0) | 2023.08.16 |
블록체인 탈중앙화 앱(리믹스 솔리디티를 이용한 Dapp 구현) 3장 (1) | 2023.06.28 |
블록체인 탈중앙화 앱(탈중앙화, Dapp) 3장 (8) | 2023.06.23 |
블록체인이란?(블록체인과 분산원장 기술, 거래과정, 특징) 1장 (8) | 2023.06.07 |
댓글