[⛓블록체인] 이더리움 이해하기

dsfasd·2023년 2월 7일
0

이더리움이란?

블록체인 기반의 분산 컴퓨팅 플랫폼

  • 이더리움은 자체 암호화 화폐인 이더(Ether)가 존재합니다.
    이를 통해 계좌간 송금 및 가스 구입을 통한 이더리움의 자원 사용에 사용됩니다.
  • 비트코인에 비해 좀 더 복잡하고 다양한 계약 조건들을 구현 가능합니다.
    ex. 분산 어플리케이션을 구현 가능. (즉, 중앙 중개기관 없이 다양한 종류의 서비스를 사용자들에게 제공 합니다. 기존의 금융, 신원관리, sns, 의료, 예술 등 다양한 분야에 걸쳐 기존의 중앙중개기관을 통한 서비스 제공 대신 탈중앙화된 분산 어플리케이션을 통해 효율적이고 안전한 서비스를 제공합니다. 기존 어플리케이션의 백엔드 코드가 중앙 서버에서 실행된다면, 분산 어플리케이션의 벡앤드 코드는 분산화된 p2p 네트워크에서 실행됩니다.
  • 이더리움 가상머신(EVM)을 통해 모든 참가자들의 컴퓨터에서 동일한 연산을 수행하고 모두 동일한 상태에 합의합니다. 전 세계 참가자가 동일한 하나의 컴퓨터를 돌리는 것과 같기에 “세계 컴퓨터”라고 불리기도 합니다.

이더리움의 계층구조

크게 3가지 , 어플리케이션층 / 소프트웨어층 / 하드웨어층 으로 나뉩니다.

하드웨어층 - 이더리움 블록체인 네트워크

  • 블록체인의 노드들이 네트워크를 이루는 모습입니다.
    비트코인과 블록을 이뤄서 체인으로 연결한다는 점에서 유사합니다.

  • 이더리움 네트워크는 접속 프로그램, 클라이언트를 통해 접속합니다.

  • 풀노드, 라이트노드, 피어로 참여가 가능합니다.
    풀노드 - 모든 원장을 갖고있는 노드
    라이트 노드 - 거래 내역 중 핵심본만 저장하는 노드, 필요한 부분만 저장
    피어 - 참여자 노드

소프트웨어층 - 솔리디티 스마트 컨트랙트

스마트 컨트랙트 전용 언어들(solidity, Go, C++,LLL 등)로 작성됩니다.

어플리케이션층 - 디센트럴랜드 어플리케이션층

개발한 어플리케이션을 블록체인 네트워크와 연동합니다.


이더리움 트랜잭션 동작 과정

블록체인의 하나의 state는 수백만의 사용자들의 거래 정보가 담기게 됩니다. 이를 트랜잭션이라고 합니다. 이는 블록 단위로 묶여 있습니다. 각각의 블록들은 이전 블록과 연결되어 있습니다.

트랜잭션은 Genesis state로 시작합니다. 비트코인의 제네시스 블록에 해당합니다. 제네시스 상태에서 시작하여 사용자들의 거래가 누적되다보면 상태가 1, 2,,,, n 으로 점차 갱신됩니다. 어느 한 시점에서의 final state는 정보가 확정된 경우에 해당합니다.

하나의 블록이 state를 나타내는 것이 아니라 말 그대로 현재 상태state를 의미합니다.

값이 변경, 블록 생성 등의 변화가 있는 경우를 새로운 state로 업데이트 된다고 표현합니다.

블록은 단순한 데이터의 집합이 아니라 상태변화 함수의 결과 입니다.


이더리움 마이닝

final state에서 다음 state로 전환하기 위해서는 트랜잭션의 유효성 검사( Mining )을 거쳐야 합니다. 유효성 검사란 miner 노드가 compute resourse를 투입하여 유효한 블록을 생성하는 경우입니다.

블록 헤더에 부모 블록의 hash가 기록되므로 블록이 체인처럼 연결 됩니다.

블록을 메인 블록체인에 올리기 위해서는 채굴자느 반드시 다른 경쟁 채굴자보다 빨리 이를 증명해야합니다. 이렇게 채굴자가 수학적 증거를 제거함으로써 각각의 블록을 증명하는 과정을 PoW(작업 증명 방식)이라고 부릅니다.

  • 마이닝을 통한 보상: 새로운 블록을 증명한 채굴자는 채굴 작업에 대해서 일정한 양의 보상을 받습니다. (Ether) 채굴자가 블록을 검증하고, 블록을 이어 붙일 때 새로운 이더를 함께 생성하고 ,이를 보상으로 가져가는 방식입니다.

블록을 만들기 전 상태 s[0]에서 부터 거래내용에 대한 변경 내용을 모두 적용하여 업데이트를 하고 이에 따라서 변경된 각 계정의 잔액(balance)를 기록합니다.

최종적으로 마이닝에 성공하면 S_FINAL 상태의 account 내용을 블록에 담고 이더리움 블록체인에 broadcasting합니다.


이더리움 가스(Gas)

이더리움은 자체 암호 화폐인 Ehter 가 있으며 계좌간 송금 또는 스마트 컨트랙트 사용 및 이더리움의 자원을 활용하는 경우 가스(gas)를 지불합니다.

이더리움을 비롯한 대부분의 블록체인은 데이터의 저장 및 가공의 높은 중복성이 특징입니다. 따라서 전세계 참여자들이 동일한 데이터를 저장하고 동일한 연산을 중복되게 실시하므로 사용할 수 있는 자원에 한계가 있습니다.

또한 비허가성 블록체인이기 때문에 누구나 블록체인을 읽고 쓸 수 있기에 공유지의 비극이 생길 수 있고 이를 막기 위해 한정된 자원에 비용을 매길 필요가 있습니다.

비트코인 같은 경우에는 거래 수수료를 지불하고, 이더리움 같은 경우에는 계약의 실행을 위한 연산력( 저장공간, 네트워크 사용 등 )을 사용하기 위해서 특정 대가를 지불해야 하는데 이것이 가스입니다.

가스 계산?

  • 최대 트랜잭션 실행 비용 : 가스 가격 x 가스 총량

  • 가스 가격: 가스당 트랜잭션을 요청한 사람이 지급할 가격/ 사용자가 지불할 용의가 있는 최대 수수료

  • 가스 총량: 트랜잭션 수행에 소비 될 총 가스량에 대한 추정치

트랜잭션을 발생시키면 Max Tx Fee를 받아가고 사용 후 남은 만큼을 돌려줍니다.

사용자가 가스 가격을 지정하기 때문에 실수로 큰 금액을 입력하게 된다면 가스 가격이 매우 높게 입력되는 케이스도 존재합니다.


이더리움 계좌 종류 및 차이점 (EOA/CA)

이더리움 계좌Account 종류에는 EOA와 CA로 나뉩니다.

외부 소유 계좌 (EOA):
공개 이더리움 주소와 개인키 조합 = 즉, 지갑 주소
이를 통해 다른 계정과 이더리움을 송수신하고 스마트 컨트랙트에 대한 트랜잭션을 보낼 수 있습니다.
메타마스크, 카이카이스에서 만든 계정이 이에 해당됩니다.

계약 계좌 (CA):
EOA와 달리 개인키 존재하지 않습니다.
스마트컨트랙트를 블록체인에 배포할 때 생성합니다.
EOA와 동일하게 다른 계정과 이더를 송수신 하는 기능입니다.
컨트랙트 계정은 코드를 담는데, 이를 스마트컨트랙트라고 합니다.
EOA나 다른 컨트랙트의 호출을 받아서 트랜잭션 발생 시키며, 스스로 동작하지 않습니다.
스마트 컨트랙트에 접근하기 위한 주소가 곧 컨트랙트 계정을 의미합니다.

profile
기록을 정리하는 공간!

0개의 댓글